如,可以在輸入的視頻的待估計(jì)幀中查找與參考幀中的塊匹配度最高的塊,并計(jì)算該塊與參考幀中的參考?jí)K之間的相對(duì)位移,作為運(yùn)動(dòng)估計(jì)的結(jié)果。
[0109]可以采用如下方式來(lái)查找匹配度最高的塊:首先確定運(yùn)動(dòng)矢量搜索范圍,即確定候選運(yùn)動(dòng)矢量,然后計(jì)算候選運(yùn)動(dòng)矢量的預(yù)測(cè)誤差和比特?cái)?shù),基于參考幀中的待匹配塊待估計(jì)幀中的預(yù)測(cè)塊的匹配度建立運(yùn)動(dòng)矢量的率失真代價(jià)函數(shù),之后根據(jù)候選運(yùn)動(dòng)矢量確定待估計(jì)幀中的匹配塊,計(jì)算該預(yù)測(cè)塊對(duì)應(yīng)的運(yùn)動(dòng)矢量率失真代價(jià)。最后遍歷所有候選運(yùn)動(dòng)矢量,通過(guò)最小化該率失真代價(jià)函數(shù)來(lái)估算運(yùn)動(dòng)矢量。其中,匹配度可以基于圖像特征進(jìn)行計(jì)算。進(jìn)一步地,圖像特征可以為空間域的特征,例如圖像的紋理、顏色等特征。
[0110]步驟403,基于第二碼率以及三元組估計(jì)第二碼率的視頻的最佳第二運(yùn)動(dòng)矢量。
[0111]在本實(shí)施例中,第二碼率不同于第一碼率,其量化參數(shù)不同,為了提高第二碼率的視頻的運(yùn)動(dòng)估計(jì)效率,可以基于第二碼率的量化參數(shù),在第一碼率的視頻的運(yùn)動(dòng)估計(jì)中所獲得的三元組的基礎(chǔ)上估計(jì)第二碼率的視頻的運(yùn)動(dòng)矢量。
[0112]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,可以通過(guò)如下方式來(lái)估計(jì)所述第二碼率的視頻的最佳第二運(yùn)動(dòng)矢量:
[0113]首先,確定第二碼率的量化參數(shù)。該量化參數(shù)可以是H.264標(biāo)準(zhǔn)中規(guī)定的參數(shù)。在實(shí)際編碼過(guò)程中,可以通過(guò)碼率控制模塊得到第二碼率的量化參數(shù)。
[0114]然后,基于第一碼率的視頻的運(yùn)動(dòng)估計(jì)過(guò)程中所得到的三元組以及第二碼率的量化參數(shù),計(jì)算第二碼率的視頻中對(duì)應(yīng)分塊的運(yùn)動(dòng)矢量率失真代價(jià)。第二碼率的視頻中對(duì)應(yīng)分塊的運(yùn)動(dòng)矢量率失真代價(jià)的計(jì)算也可以根據(jù)上述式(3)和(4)計(jì)算。
[0115]之后,遍歷每個(gè)分塊的三元組,將使第二碼率的視頻中對(duì)應(yīng)分塊的運(yùn)動(dòng)矢量率失真代價(jià)最小的三元組中的候選運(yùn)動(dòng)矢量作為對(duì)應(yīng)分塊的最佳第二運(yùn)動(dòng)矢量。
[0116]步驟404,對(duì)最佳第二運(yùn)動(dòng)矢量進(jìn)行優(yōu)化。
[0117]在本實(shí)施例中,可以采用多種優(yōu)化方式對(duì)步驟403所得出的最佳第二運(yùn)動(dòng)矢量進(jìn)行優(yōu)化,例如可以采用IBP(Iterat1n Back Project1n,迭代反投影)的方法迭代計(jì)算最佳第二運(yùn)動(dòng)矢量的優(yōu)化值,當(dāng)優(yōu)化值使得參考幀和待匹配幀間的誤差收斂或小于某一閾值時(shí),停止迭代,將當(dāng)前的優(yōu)化值作為最佳第二運(yùn)動(dòng)矢量的優(yōu)化結(jié)果。
[0118]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,可以通過(guò)如下方式來(lái)對(duì)最佳第二運(yùn)動(dòng)矢量進(jìn)行優(yōu)化:
[0119]首先,確定第二碼率的視頻中對(duì)應(yīng)分塊的運(yùn)動(dòng)矢量?jī)?yōu)化集合。該優(yōu)化集合可以是包含最佳運(yùn)動(dòng)矢量,以及其最鄰近的八個(gè)運(yùn)動(dòng)矢量的集合。其中,最鄰近的八個(gè)運(yùn)動(dòng)矢量可以為歐式距離最近的八個(gè)運(yùn)動(dòng)矢量。由于運(yùn)動(dòng)矢量的估計(jì)一般是基于圖像像素的,所以運(yùn)動(dòng)矢量是像素級(jí)的,則當(dāng)最佳第二運(yùn)動(dòng)矢量為(x,y)時(shí)(其中x,y的單位為像素),其最鄰近的八個(gè)運(yùn)動(dòng)矢量為(X,y+1)、(χ+1,y),(χ+l,y+1),(x,y-1),(χ-1,y),(χ-1,y-1),(χ-1,y+1)以及(χ+1,y-1)。
[0120]然后,計(jì)算運(yùn)動(dòng)矢量?jī)?yōu)化集合內(nèi)的所有運(yùn)動(dòng)矢量對(duì)應(yīng)的率失真代價(jià)。在本實(shí)施例中,可以根據(jù)上述實(shí)施例中已確定的第二碼率的量化參數(shù)、并計(jì)算運(yùn)動(dòng)矢量?jī)?yōu)化集合內(nèi)的每個(gè)運(yùn)動(dòng)矢量對(duì)應(yīng)的比特?cái)?shù)和預(yù)測(cè)誤差,之后采用上述式(3)計(jì)算運(yùn)動(dòng)矢量?jī)?yōu)化集合內(nèi)所有運(yùn)動(dòng)矢量對(duì)應(yīng)的率失真代價(jià)。
[0121]將率失真代價(jià)最小的運(yùn)動(dòng)矢量作為優(yōu)化后的最佳第二運(yùn)動(dòng)矢量。即從運(yùn)動(dòng)矢量?jī)?yōu)化集合中選擇使得率失真代價(jià)最小的運(yùn)動(dòng)矢量作為優(yōu)化結(jié)果。
[0122]步驟405,根據(jù)最佳第二運(yùn)動(dòng)矢量確定第二碼率的視頻的編碼模式。
[0123]在H.264標(biāo)準(zhǔn)中,視頻幀的類型可以包括:1幀(幀內(nèi)編碼幀)、P幀(幀間預(yù)測(cè)編碼幀)以及B幀(雙向預(yù)測(cè)編碼幀)。H.264標(biāo)準(zhǔn)中,視頻中的每一幀圖像的分塊方式可以包括:16X16、16X8、8X16、8X8、8X4、4X8,其中每種分塊方式都有多種編碼模式,例如水平模式、垂直模式、對(duì)角線模式等等。對(duì)于視頻中的某一幀,如果前一幀已經(jīng)完成編碼,則可以根據(jù)當(dāng)前幀與前一幀間的運(yùn)動(dòng)矢量來(lái)確定當(dāng)前幀的最佳編碼模式。具體地,可以根據(jù)優(yōu)化后的最佳第二運(yùn)動(dòng)矢量與各編碼模式間的關(guān)聯(lián)關(guān)系,來(lái)查找使得編碼后視頻的失真最小的編碼模式。
[0124]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,可以基于以上已描述的第二碼率視頻的編碼模式確定方法來(lái)類似地確定第一碼率的視頻的編碼模式,此處不再贅述。
[0125]在確定第一碼率的視頻和第二碼率的視頻的編碼模式之后,可以分別對(duì)輸入的視頻按照相應(yīng)的編碼模式進(jìn)行編碼,從而得到第一碼率的視頻和第二碼率的視頻??梢岳斫猓瑢⒁陨厦枋龅牡诙a率視頻的運(yùn)動(dòng)估計(jì)和編碼模式確定方法用于其它碼率,則可以獲得多個(gè)不同碼率的視頻??蛇x地,第一碼率大于第二碼率。
[0126]從圖4中可以看出,與圖2對(duì)應(yīng)的實(shí)施例相比,本實(shí)施例中的用于生成多碼率的視頻的方法的流程400增加了對(duì)最佳第二運(yùn)動(dòng)矢量進(jìn)行優(yōu)化的步驟404。由此,本實(shí)施例描述的方案可以進(jìn)一步精煉第二碼率的視頻的運(yùn)動(dòng)估計(jì),從而進(jìn)一步降低提升多碼率視頻生成過(guò)程中的失真,提升視頻編碼的精確度。
[0127]進(jìn)一步參考圖5,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N用于生成多碼率的視頻的裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
[0128]如圖5所示,本實(shí)施例所述的用于生成多碼率視頻的裝置500包括:獲取單元501,第一估計(jì)單元502,第二估計(jì)單元503以及第一確定單元504。其中,獲取單元501配置用于獲取輸入的視頻;第一估計(jì)單元502配置用于基于第一碼率對(duì)輸入的視頻進(jìn)行運(yùn)動(dòng)估計(jì),得出第一碼率的視頻的最佳第一運(yùn)動(dòng)矢量以及至少一個(gè)包含候選運(yùn)動(dòng)矢量、候選運(yùn)動(dòng)矢量的預(yù)測(cè)誤差和候選運(yùn)動(dòng)矢量的比特?cái)?shù)的三元組;第二估計(jì)單元503配置用于基于第二碼率以及三元組估計(jì)第二碼率的視頻的最佳第二運(yùn)動(dòng)矢量;第一確定單元504配置用于根據(jù)最佳第二運(yùn)動(dòng)矢量確定第二碼率的視頻的編碼模式。
[0129]在本實(shí)施例中,獲取單元501可以從生成多碼率視頻的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)已存儲(chǔ)的視頻數(shù)據(jù)中提取用戶請(qǐng)求播放的視頻。第一估計(jì)單元502可以基于第一碼率確定量化參數(shù),通過(guò)最小化率失真代價(jià)函數(shù)對(duì)所獲取的視頻中的各子幀進(jìn)行運(yùn)動(dòng)估計(jì),得出至少一個(gè)包含候選運(yùn)動(dòng)矢量及其比特?cái)?shù)和預(yù)測(cè)誤差的三元組,以及第一碼率的視頻的最佳第一運(yùn)動(dòng)矢量。第二估計(jì)單元503可以基于第一估計(jì)單元502所得出的三元組以及第二碼率,通過(guò)最小化率失真代價(jià)函數(shù)來(lái)對(duì)第二碼率的視頻進(jìn)行運(yùn)動(dòng)估計(jì),以獲得最佳第二運(yùn)動(dòng)矢量。第一確定單元504可以根據(jù)編碼模式的量化參數(shù)以及最佳第二運(yùn)動(dòng)矢量建立編碼模式的率失真代價(jià)函數(shù),在多種可選的編碼模式中,選取使得編碼模式的率失真代價(jià)函數(shù)最小的編碼模式作為第二碼率的視頻的編碼模式。
[0130]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,裝置500還可以包括第二確定單元505以及編碼單元506 (未示出)。第二確定單元505配置用于根據(jù)最佳第一運(yùn)動(dòng)矢量確定第一碼率的視頻的編碼模式。編碼單元505配置用于根據(jù)第一碼率的視頻的編碼模式對(duì)輸入的視頻進(jìn)行編碼,以生成第一碼率的視頻;以及根據(jù)第二碼率的視頻的編碼模式對(duì)輸入的視頻進(jìn)行編碼,以生成第二碼率的視頻。
[0131]本領(lǐng)域技術(shù)人員可以理解,上述用于生成多碼率視頻的裝置500還包括一些其他公知結(jié)構(gòu),例如處理器、存儲(chǔ)器等,為了不必要地模糊本公開(kāi)的實(shí)施例,這些公知的結(jié)構(gòu)在圖5中未示出。
[0132]下面參考圖6,其示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)600的結(jié)構(gòu)示意圖。
[0133]如圖6所示,計(jì)算機(jī)系統(tǒng)600包括中央處理單元(CPU)601,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(ROM) 602中的程序或者從存儲(chǔ)部分608加載到隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 603中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在RAM 603中,還存儲(chǔ)有系統(tǒng)600操作所需的各種程序和數(shù)據(jù)。CPU 60KROM 602以及RAM 603通過(guò)總線604彼此相連。輸入/輸出(I/O)接口605也連接至總線604。
[0134]以下部件連接至I/O接口 605:包括鍵盤、鼠標(biāo)等的輸入部分606 ;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分607 ;包括硬盤等的存儲(chǔ)部分608 ;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分609。通信部分609經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器610也根據(jù)需要連接至I/O接口 605??刹鹦督橘|(zhì)611,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器610上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分608。
[0135]特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開(kāi)的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過(guò)通信部分609從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)611被安裝。
[0136]附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0137]描述于本申請(qǐng)實(shí)施例中所涉及到的單元可以通過(guò)軟件的方式實(shí)現(xiàn),也可以通過(guò)硬件的方式來(lái)實(shí)現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括獲取單元、第一估計(jì)單元、第二估計(jì)單元和第一確定單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對(duì)該單元本身的限定,例如,獲取單元還可以被描述為“獲取輸入的視頻的單元”。
[0138]作為另一方面,本申請(qǐng)還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:獲取輸入的視頻;基于