專(zhuān)利名稱(chēng):一種視頻編碼中碼率的控制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,尤其涉及一種視頻編碼中碼率的控制方法及裝置。
背景技術(shù):
在視頻通信應(yīng)用中, 為了便于視頻數(shù)據(jù)的傳輸和存儲(chǔ)需要對(duì)視頻圖像進(jìn)行壓縮編碼。由于視頻圖像是隨時(shí)間變化的,經(jīng)過(guò)壓縮編碼輸出的壓縮碼流比特?cái)?shù)也會(huì)隨時(shí)間變化。用單位時(shí)間內(nèi)壓縮編碼輸出的碼流比特?cái)?shù)之和表示編碼輸出的碼率,則視頻編碼輸出碼率會(huì)在一定范圍內(nèi)波動(dòng)。由于網(wǎng)絡(luò)上的帶寬或者存儲(chǔ)媒質(zhì)容量是有限的,這就需要在視頻壓縮編碼過(guò)程中進(jìn)行碼率控制,使編碼端輸出的碼率不超過(guò)設(shè)定的網(wǎng)絡(luò)帶寬或者存儲(chǔ)媒質(zhì)容量的上限,防止出現(xiàn)丟包現(xiàn)象?,F(xiàn)有碼率控制算法大多采用VBV(virtual buffer verification,視頻緩存檢驗(yàn)器)來(lái)控制編碼輸出比特?cái)?shù)。在VBV中,編碼器在編碼時(shí)有一個(gè)虛擬的碼流緩沖區(qū),記為buffer0編碼器在編碼每一幀時(shí),首先計(jì)算待編碼幀的目標(biāo)比特?cái)?shù),根據(jù)目標(biāo)比特?cái)?shù)計(jì)算量化參數(shù)(QP值),通過(guò)QP值調(diào)節(jié)每巾貞輸出的bit數(shù)。當(dāng)buffer中的碼流快要下溢時(shí),編碼器為這幀產(chǎn)生較多的bit數(shù);當(dāng)buffer中的碼流快要上溢時(shí),編碼器為這幀產(chǎn)生較少的bit數(shù),或者跳幀。這樣,buffer中的碼流就可以按照設(shè)定的碼率勻速輸出。但是,在實(shí)時(shí)視訊應(yīng)用中會(huì)出現(xiàn)待編碼圖像復(fù)雜度突然增加的情況,編碼器輸出的瞬時(shí)碼率有可能超過(guò)設(shè)定的網(wǎng)絡(luò)帶寬上限,而虛擬碼流緩沖區(qū)仍然顯示不上溢也不下溢。例如在編碼器連續(xù)編碼輸出若干幀復(fù)雜度低的靜止圖像之后,虛擬碼流緩沖區(qū)中剩余比特?cái)?shù)很少,此時(shí),如果待編碼圖像突然變得很復(fù)雜,為了確保圖像質(zhì)量,編碼器必須連續(xù)輸出較大的比特流,虛擬碼流緩沖區(qū)的滿度將迅速增加。此時(shí),虛擬碼流緩沖區(qū)中存放的碼流可能為最近的不足I秒鐘的壓縮碼流,虛擬碼流緩沖區(qū)中的碼流比特?cái)?shù)之和顯然不能表示此時(shí)的編碼輸出瞬時(shí)碼率,因此,通過(guò)虛擬碼流緩沖區(qū)的碼流比特?cái)?shù)之和來(lái)判定輸出碼率是否超過(guò)設(shè)定上限的方法,無(wú)法確保任意時(shí)刻編碼輸出的碼率不超過(guò)設(shè)定的上限,可能導(dǎo)致網(wǎng)絡(luò)阻塞或丟包,影響解碼輸出的圖像質(zhì)量和播放流暢性,降低視頻實(shí)時(shí)通信的主觀感受。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種視頻編碼中碼率的控制方法及裝置。用以控制視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限,防止網(wǎng)絡(luò)阻塞或丟包。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案本發(fā)明的實(shí)施例提供一種視頻編碼中碼率的控制方法及裝置。用以控制視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限,防止網(wǎng)絡(luò)阻塞或丟包。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案一方面,提供一種視頻編碼中碼率的控制方法,包括,
設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀;若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀;其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。一方面,提供一種視頻編碼中碼率的控制裝置,包括,滑動(dòng)窗口設(shè)置模塊,用于設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀;輸出判斷模塊,用于判斷是否輸出當(dāng)前幀,若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀;其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。本發(fā)明實(shí)施例提供的視頻編碼中碼率的控制方法及裝置,采用預(yù)設(shè)的滑動(dòng)窗口, 并將滑動(dòng)窗口的大小設(shè)置為預(yù)設(shè)的幀率,這樣,編碼器輸出的瞬時(shí)碼率就等于每秒內(nèi)滑動(dòng)窗口內(nèi)的所有編碼輸出幀的壓縮碼流比特?cái)?shù)之和。編碼器在輸出每幀時(shí),若滑動(dòng)窗口內(nèi)所有編碼輸出幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,表明編碼器輸出的瞬時(shí)碼率大于預(yù)設(shè)的碼率上限,則不輸出當(dāng)前幀。從而控制視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限,防止網(wǎng)絡(luò)阻塞或丟包。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例提供的視頻編碼中碼率的控制方法的流程圖;圖2為本發(fā)明實(shí)施例提供的第一、第二滑動(dòng)窗口的示意圖;圖3為本發(fā)明另一實(shí)施例提供的視頻編碼中碼率的控制方法的流程圖;圖4為本發(fā)明實(shí)施例提供的視頻編碼中碼率的控制裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例中,在視頻編碼器中設(shè)置滑動(dòng)窗口,滑動(dòng)窗口的大小N等于預(yù)設(shè)的幀率。其中,該預(yù)設(shè)的幀率可以根據(jù)用戶對(duì)圖像的流暢新需求、網(wǎng)絡(luò)可用帶寬等條件確定。例如,預(yù)設(shè)的幀率為30時(shí),表示每秒編碼輸出30幀圖像,則滑動(dòng)窗口的大小N = 30。由于編碼輸出的碼率是單位時(shí)間內(nèi)壓縮編碼輸出的碼流比特?cái)?shù)之和。這樣,在單位時(shí)間,即每秒內(nèi),滑動(dòng)窗口內(nèi)的所有編碼輸出幀的壓縮碼流比特?cái)?shù)之和等于此時(shí)編碼器輸出的瞬時(shí)碼率。編碼器在編碼、輸出每一幀時(shí),通過(guò)控制活動(dòng)窗口內(nèi)的所有編碼輸出幀的比特?cái)?shù),可以確保視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限。本發(fā)明實(shí)施例提供的視頻編碼中碼率的控制方法,如圖I所示,包括,
101、設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀。其中,當(dāng)前幀是指編碼器進(jìn)行編碼、輸出處理的那一幀。如圖2所示。第一滑動(dòng)窗口的大小等于幀率N,當(dāng)前幀是第一滑動(dòng)窗口的第N幀。此時(shí),編碼器已經(jīng)編碼輸出第一滑動(dòng)窗口內(nèi)的第I至N-I幀,并完成對(duì)第N幀的編碼即將輸出第N幀。202、若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀。計(jì)算第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和,當(dāng)滿足條件, ΛΓ-1
L1 + Ly > max hit rate
i=l編碼器不輸出當(dāng)前幀N,即丟棄當(dāng)前幀。其中,LnS當(dāng)前編碼幀的比特?cái)?shù)A為第一滑動(dòng)窗口內(nèi)已經(jīng)編碼的第i幀的壓縮碼流比特?cái)?shù);maXbitrate為預(yù)設(shè)的碼率上限,具體可以是預(yù)設(shè)的網(wǎng)絡(luò)帶寬上限,或者根據(jù)存儲(chǔ)媒質(zhì)(如硬盤(pán)、光盤(pán)等)的容量換算得到的碼率上限小為第一滑動(dòng)窗口的大小,即預(yù)設(shè)的幀率。本發(fā)明實(shí)施例提供的視頻編碼中碼率的控制方法,將預(yù)設(shè)的幀率設(shè)置為活動(dòng)窗口的大小,這樣,編碼器輸出的瞬時(shí)碼率就等于每秒內(nèi)滑動(dòng)窗口內(nèi)的所有編碼輸出幀的壓縮碼流比特?cái)?shù)之和。編碼器在輸出每幀時(shí),若滑動(dòng)窗口內(nèi)的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,表明編碼器輸出的瞬時(shí)碼率大于預(yù)設(shè)的碼率上限,則不輸出當(dāng)前幀。從而控制視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限,防止網(wǎng)絡(luò)阻塞或丟包。本發(fā)明實(shí)施例提供的另一種視頻編碼中碼率的控制方法,如圖3所示,包括,301、設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于第一滑動(dòng)窗口的第N幀。其中,當(dāng)前幀是指編碼器進(jìn)行編碼、輸出處理的那一幀。如圖2所示。第一滑動(dòng)窗口的大小等于幀率N,當(dāng)前幀是第一滑動(dòng)窗口的第N幀。此時(shí),編碼器已經(jīng)編碼輸出第一滑動(dòng)窗口內(nèi)的第I至N-I幀即將開(kāi)始編碼第N幀。302、判斷是否編碼當(dāng)前幀。計(jì)算第一滑動(dòng)窗口內(nèi)第I幀至第N-I幀的壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)比特?cái)?shù)上限之和。若第一滑動(dòng)窗口內(nèi)的第I幀至第N-I幀壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)
當(dāng)滿各條
比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不編碼當(dāng)前幀。即 y/ ^(b,lra!c)>m^hiira/c
lX N編碼器不編碼第N幀。其中,Li為第一滑動(dòng)窗口內(nèi)已經(jīng)編碼的第i幀的壓縮碼流比特?cái)?shù);maXbitrate為設(shè)定的碼率上限,具體可以是預(yù)設(shè)的網(wǎng)絡(luò)帶寬上限,或者根據(jù)存儲(chǔ)媒質(zhì)(如硬盤(pán)、光盤(pán)等)的容量換算得到的碼率上限;N為第一滑動(dòng)窗口的大小,(bitrate/N)表示第一滑動(dòng)窗口中第N幀的目標(biāo)比特?cái)?shù),該值可以根據(jù)設(shè)置的編碼器的目標(biāo)比特率bitrate計(jì)算得到。若第一滑動(dòng)窗口內(nèi)的第I幀至第N-I幀壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)
不滿矣條#,
比特?cái)?shù)之和不大于預(yù)設(shè)的碼率上限,編碼當(dāng)前幀,即 y z ,bitrate >
W、N '編碼器編碼第N幀。
本步驟中,若確定不編碼當(dāng)前幀,則跳過(guò)當(dāng)前幀,步驟結(jié)束。對(duì)下一幀進(jìn)行處理。若確定編碼當(dāng)前幀,在編碼完成后,進(jìn)入步驟303。303、設(shè)置第二滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第二滑動(dòng)窗口的第N-(M-I)幀。其中,當(dāng)前幀是指編碼器進(jìn)行編碼、輸出處理的那一幀。如圖2所示。第二滑動(dòng)窗口的大小等于幀率N,當(dāng)前幀是第二滑動(dòng)窗口的第N-(M-I)幀。此時(shí),編碼器已經(jīng)編碼輸出第二滑動(dòng)窗口內(nèi)的第I至N-M幀,編碼器即將開(kāi)始編碼第N-(M-I)幀。304、根據(jù)第二滑動(dòng)窗口內(nèi)第I幀至第N-M幀的壓縮碼流比特?cái)?shù)之和確定當(dāng)前幀的目標(biāo)比特?cái)?shù)上限。計(jì)算第二編碼器將根據(jù)滑動(dòng)窗口內(nèi)第I幀至第N-M幀的壓縮碼
流比特?cái)?shù)之和,則當(dāng)就!貞的目標(biāo)中特ItJi限為
權(quán)利要求
1.一種視頻編碼中碼率的控制方法,其特征在于,包括 設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀; 若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,則不輸出當(dāng)前幀;其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述“設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀”與所述“若第一滑動(dòng)窗口內(nèi)的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀”之間還包括 若第一滑動(dòng)窗口內(nèi)第I幀至第N-I幀的壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不編碼當(dāng)前幀,當(dāng)前幀的處理步驟結(jié)束; 若第一滑動(dòng)窗口內(nèi)第I幀至第N-I幀的壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)比特?cái)?shù)之和不大于預(yù)設(shè)的碼率上限,編碼當(dāng)前幀。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀之前還包括, 設(shè)置第二滑動(dòng)窗口的位置,使所述當(dāng)前幀位于所述第二滑動(dòng)窗口的第N-(M-I)幀; 根據(jù)第二滑動(dòng)窗口內(nèi)第I幀至第N-M幀的壓縮碼流比特?cái)?shù)之和確定當(dāng)前幀的目標(biāo)比特?cái)?shù)上限; 其中,所述第二滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述當(dāng)前幀的目標(biāo)比特?cái)?shù)上限為,
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述M取值為3或者4。
6.一種視頻編碼中碼率的控制裝置,其特征在于,包括, 滑動(dòng)窗口設(shè)置模塊,用于設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀; 輸出判斷模塊,用于判斷是否輸出當(dāng)前幀,若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀; 其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括, 編碼判斷模塊,用于判斷是否編碼當(dāng)前幀,若第一滑動(dòng)窗口內(nèi)第I幀至第N-I幀的壓縮碼流比特?cái)?shù)之和與第N幀預(yù)設(shè)的目標(biāo)比特?cái)?shù)上限之和大于預(yù)設(shè)的碼率上限,不編碼當(dāng)前幀; 其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述滑動(dòng)窗口設(shè)置單元,還用于設(shè)置第二滑動(dòng) 窗口的位置,使所述當(dāng)前幀位于所述第二滑動(dòng)窗口的第N-(M-I)幀; 所述裝置還包括,確定模塊,用于根據(jù)第二滑動(dòng)窗口內(nèi)第I幀至第N-M幀的壓縮碼流比特?cái)?shù)之和確定當(dāng)前幀的目標(biāo)比特?cái)?shù)上限; 其中,所述第二滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。
全文摘要
本發(fā)明實(shí)施例提供一種視頻編碼中碼率的控制方法及裝置,涉及視頻編碼技術(shù)領(lǐng)域,用以控制視頻編碼輸出的瞬時(shí)碼率不超過(guò)設(shè)定的碼率上限,防止網(wǎng)絡(luò)阻塞或丟包;所述方法包括,設(shè)置第一滑動(dòng)窗口的位置,使當(dāng)前幀位于所述第一滑動(dòng)窗口的第N幀;若第一滑動(dòng)窗口內(nèi)所有幀的壓縮碼流比特?cái)?shù)之和大于預(yù)設(shè)的碼率上限,不輸出當(dāng)前幀;其中,所述第一滑動(dòng)窗口的大小等于預(yù)設(shè)的幀率N。本發(fā)明實(shí)施例用于視頻編碼。
文檔編號(hào)H04N7/26GK102724502SQ20121019060
公開(kāi)日2012年10月10日 申請(qǐng)日期2012年6月11日 優(yōu)先權(quán)日2012年6月11日
發(fā)明者姚曄, 張麗萍, 王銘學(xué) 申請(qǐng)人:華為技術(shù)有限公司