曾嘉亮,鐘似玢
(1.汕頭職業(yè)技術(shù)學(xué)院機電工程系,廣東 汕頭 515078;2.中山大學(xué)計算機應(yīng)用研究所,廣東 廣州 510006)
在視頻直播、視頻會議等多終端應(yīng)用中,將新加入的觀眾從發(fā)出切入請求,到真正開始收看視頻的時間間隔,稱為切入時間。
在傳統(tǒng)的H.264/AVC[1]多終端視頻系統(tǒng)中,最長切入時間是由圖像組(Group Of Pictures,GOP)的長度決定的。GOP越長,切入時間被延長的概率就增大;而長時間等待勢必嚴(yán)重影響用戶體驗。一個簡單的解決方法為縮短GOP的長度。這樣做可以解決切入時間過長的問題,但與此同時也導(dǎo)致了壓縮效率下降的負面效果。
經(jīng)過進一步研究發(fā)現(xiàn)一個較好的解決方案:利用H.264/AVC 標(biāo)準(zhǔn)所提供的多參考幀機制[1-4],在編碼時令特定的 P 幀(Predictively coded picture[2])成為長期參考幀,并對編碼服務(wù)器進行相應(yīng)設(shè)置,既能解決切入時間過長的問題,又降低了對壓縮效率的影響。
在多終端視頻系統(tǒng)中,由于新加入的觀眾必須在得到一個I(Intra)幀之后,才能正常收看視頻,而通常一個GOP只有第一幀是I幀,因此,傳統(tǒng)編碼方案中,最長切入時間由GOP的長度決定。另一方面,為提高編碼效率,編碼器一般會將GOP的長度設(shè)置盡可能大,這就增加了切入時間延長的概率??梢姡趥鹘y(tǒng)視頻系統(tǒng)中,切入時間和編碼效率是一對矛盾。
1.1.1 服務(wù)器編碼發(fā)送碼流S
假設(shè)服務(wù)器端編碼和發(fā)送的視頻流GOP長度為100幀,整個視頻共200幀,則服務(wù)器需要發(fā)送的碼流記為S,如圖1所示。
圖1 碼流S
圖1中,字母I,P表示各幀的編碼類型,下標(biāo)的數(shù)字表示各幀在視頻流中的編碼和顯示順序。I0~P99表示同一GOP中連續(xù)的100幀圖像,各幀上方帶箭頭的線段表示各幀間的參考關(guān)系。其中,I0的編碼預(yù)測模式為幀內(nèi)模式,對它解碼不需參考其他幀;P1~P99的預(yù)測模式為幀間模式,因此每個P幀都被一個箭頭所指,箭頭的源端即該P幀的參考幀。
在碼流S中,各個P幀的默認參考幀都是其前面的一幀。這也是傳統(tǒng)H.264/AVC編碼器的典型編碼方案。
1.1.2 新觀眾
新觀眾是指當(dāng)編碼服務(wù)器已經(jīng)處于編、發(fā)碼流S的狀態(tài)時,才向服務(wù)器請求接收視頻流的客戶端。
由于P幀的解碼必須依賴于本GOP的I幀,因此,在傳統(tǒng)的系統(tǒng)中,無論新觀眾何時發(fā)出切入視頻流的請求,都必須等候S的下一個GOP的I幀到達,才能正確地解碼和顯示視頻流的后繼內(nèi)容。
將新觀眾從服務(wù)器接收的、能正確解碼的視頻流記為碼流N。顯然,N是S的一個子集。由于新觀眾可能隨時發(fā)出切入視頻流的請求,因此不同的新觀眾收到N的情況千差萬別。假設(shè)某個新觀眾在圖1所示碼流S的P3處發(fā)出切入視頻流的請求。由于已經(jīng)錯過了第一個GOP的I幀(I0)的廣播,因此該觀眾所得到的碼流N如圖2所示。
圖2 碼流N
假設(shè)圖1、圖2對應(yīng)的應(yīng)用中幀率為10 f/s(幀/s),則新觀眾從發(fā)出切入請求,到正常收看視頻,需等待將近10 s。
可見,在傳統(tǒng)的視頻系統(tǒng)中,從概率上講,新觀眾的等候時間與GOP的長度有關(guān)——GOP越長,新觀眾等候的時間可能也越長。
1.2.1 方法概述
針對1.1節(jié)所述問題,一個簡單的解決方法是縮短GOP的長度。即在編碼幀數(shù)相同的情況下,增加輸出碼流中I幀的數(shù)目。
例如,對于1.1節(jié)所述情況,采用此方法解決切入等待問題的一種方案如圖3所示。
圖3 碼流S′
圖3中,碼流S’的GOP長度縮短為20。若沿用1.1.2的假設(shè):新觀眾在碼流S’的P3處發(fā)出切入視頻流的請求。由于S’每隔20幀就有一個I幀,因此該觀眾得到的碼流N’如圖4所示。
圖4 碼流N′
同1.1.2,設(shè)圖3、圖4 對應(yīng)的應(yīng)用幀率為10 f/s,則新觀眾從發(fā)出切入請求,到正常收看視頻,最多只需等待2 s,最長等待時間縮短為圖1、圖2所示情況的20%。換言之,切入速度提高了5倍??梢?,這種方法簡單易行,并且對于縮短切入時間效果顯著。
1.2.2 簡易方法的缺點
上述簡易方法雖然可以有效縮短切入時間,但同時也存在著編碼效率降低的硬傷。下面通過一個對比實驗來說明這一缺點。
該實驗采用開源編碼器對3個測試視頻分別采用前文所述的2種方法進行編碼,為便于表述,下文將1.1節(jié)所述方法記為T1,1.2節(jié)所述方法記為T2。
實驗中,T1和T2的共同設(shè)置如下:
1)3 個編碼對象均為 CIF[3](Common Intermediate Format)格式、200 幀;
2)幀率均為10 f/s;
3)輸出目標(biāo)碼率均設(shè)為100 kbit/s;
T1和T2的編碼設(shè)置只有一點不同,即T1的GOP長度是100,而 T2是20。
實驗結(jié)果記見表1。
表1 T1,T2對比實驗數(shù)據(jù)表
表1 中,Y -PSNR[3](Peak Signal to Noise Ratio)是壓縮圖像亮度分量的峰值信噪比。3組壓縮結(jié)果的YPSNR相差不超過1.36%,說明2種方法壓縮結(jié)果的圖像質(zhì)量基本相同。較之T1,T2雖將切入時間縮短了80%,但其壓縮碼流最多比T1增大了9.62%,即T2的壓縮效率明顯低于T1。
根據(jù)H.264/AVC的技術(shù)原理,同樣的一幀圖像,將其編為I幀的輸出碼流將遠遠大于編為P幀??梢?,導(dǎo)致T2編碼效率明顯低于T1的根本原因是——I幀過于頻密。因此,要解決T2編碼效率低下的問題,關(guān)鍵在于降低I幀的密度。這正是本文提交的方法所解決的問題。
如前文所述,T2已經(jīng)解決了切入等待的問題,其缺陷在于編碼效率低,根源則是I幀過于密集。
研究發(fā)現(xiàn),利用H.264/AVC標(biāo)準(zhǔn)所提供的多參考幀和內(nèi)存管理控制操作機制,輔以編碼服務(wù)器端的相應(yīng)設(shè)置,就可以用一種特殊的P幀代替T2中的多數(shù)I幀,從而既解決了切入等待問題,又保證了編碼效率。
2.1.1 多參考幀
H.264/AVC的多參考幀機制,允許待編碼圖像在進行幀間預(yù)測時參考多個之前已編碼的圖像。該機制將參考幀分為長期參考和短期參考兩類:長期參考幀可用于預(yù)測其后相隔多幀的圖像,需要一直駐留在參考幀隊列;短期參考幀最多只能對其后面的5幀進行預(yù)測[5],因此在參考幀隊列中停留的時間極短。
對于只含I,P幀的碼流,編碼時只需要一個參考幀隊列 list0[3]。
引入多參考幀機制的本意是提高壓縮效率。但在本文提交的方法中,這一機制被創(chuàng)新性地應(yīng)用,其作用變?yōu)閷⑿掠^眾切入視頻流時所必需的最近的一幀保留在參考幀隊列中,以實現(xiàn)快速切入。
2.1.2 內(nèi)存管理控制操作
內(nèi)存管理控制操作(Memory Management Control Operation,MMCO)是H.264/AVC提供的一組命令集,編碼器通過該命令集來指示解碼器對參考幀隊列進行相應(yīng)操作。
2.2.1 編碼思路
針對T2編碼效率低的問題根源,新方法的主要思路是:將T2中為了減少切入時間而插入的I幀,全部用指定為長期參考幀的P幀來取代。
按照這一思路,圖3所示的碼流可以用新方法重新編碼為圖5所示碼流S″。
圖5 碼流S″
對比圖3和圖5,很容易看出兩種方法的關(guān)鍵區(qū)別:
1)T2為減少切入時間而增加的 I20,I40,…,I180等 I幀,在新方法中被P20,P40,…,P180等P幀所取代。
2)在圖5 中,I0,P20,P40,…,P180被指定為長期參考幀。例如,圖5中I0和P20下方帶箭頭的長線,表明I0為P20的參考幀。這些長期參考幀的作用是幫助新觀眾快速切入視頻流,因此下文將其稱為切入幀。
2.2.2 編碼端實施步驟
圖6、圖7分別說明了利用新方法實現(xiàn)圖5所示碼流S″的過程中,編碼器對參考幀列表list0的控制過程,以及編碼服務(wù)器的輸出緩沖區(qū)數(shù)據(jù)的變化情況。
下面結(jié)合圖6和圖7,給出新編碼方案實現(xiàn)碼流S″的具體步驟[3-5]:
1)編碼前,設(shè)置參考幀數(shù)目為2。
2)編碼I0時,使用MMCO指令通知解碼器:I0為長期參考幀,如圖6中(a)所示;并將I0的壓縮碼流存入編碼服務(wù)器的輸出緩沖區(qū),如圖7中(a)所示。
3)編完P(guān)1后,通過MMCO指定其為短期參考幀,推入?yún)⒖紟犃衛(wèi)ist0的位置[0]處,并將I0推入list0的位置[1]處,如圖6中(b)所示;同時將P1存入編碼服務(wù)器的輸出緩沖區(qū),如圖7中(a)所示。
對P2~P19,編碼器重復(fù)P1的步驟,如圖6中(c)所示:新的短期參考幀覆蓋先前位于list0[0]處的短期參考幀,并保持I0的位置list0[1]不動。不過,P2~P19無須放入編碼服務(wù)器的輸出緩沖區(qū)。
4)編碼P20時,指定其參考I0,并設(shè)置P20為長期參考幀,P20編碼完成后,便覆蓋掉I0,存入list0的位置[1],如圖6中(d)和(e)所示;此外,P20也需要存入編碼服務(wù)器的輸出緩沖區(qū),如圖7中(a)所示。
5)對于P21~P39幀,編碼器重復(fù)執(zhí)行步驟3),如圖6中(f)所示。
其余步驟可按上述5步進行類推后得出。
2.2.3 解碼端的切入步驟
仍然用1.1.2節(jié)的假設(shè)進行舉例說明:新觀眾在碼流S″的P3處發(fā)出切入視頻流的請求。
編碼服務(wù)器收到切入請求,就將輸出緩沖區(qū)中的I0和P1發(fā)送給新觀眾,等待下一個切入幀P20到達后,就將壓縮碼流源源不斷地送出,該觀眾得到的碼流N″如圖8所示。
圖8 碼流N″
圖9說明解碼器如何根據(jù)MMCO指令來管理參考幀隊列,正確、快速地進行切入。
圖9 新觀眾的解碼器對參考幀隊列l(wèi)ist0的控制
由上述過程不難理解,圖7將非切入幀P1緩存起來發(fā)送給新觀眾的目的是讓解碼器利用P1將I0推入list0[1]位置。
至此,新方法實現(xiàn)了對任意時刻新觀眾切入請求的快速響應(yīng)。
為便于表述,將第2節(jié)所述新方法記為PP。對開源編碼器按照第2節(jié)所述內(nèi)容進行相應(yīng)修改,實現(xiàn)PP的編碼程序。PP編碼器生成的碼流N″,可以直接用開源解碼器進行正確解碼。本實驗以1.2.2所述實驗為基礎(chǔ)。
T1,T2和PP的共同設(shè)置是:
1)3個編碼對象均為CIF格式、200幀;
2)幀率均為10幀/秒;
3)輸出目標(biāo)碼率均設(shè)為100 kbit/s。
T1,T2和PP三者的不同設(shè)置是:
1)T1的GOP長度是100;
2)T2的GOP長度是20;
3)PP的GOP長度是100,而切入幀的間隔是20。
實驗結(jié)果記見表2。
由圖2、圖4、圖9可知,T2和PP的切入速度都是T1的5倍。
由表2可知:1)圖像質(zhì)量方面:由Y-PSNR數(shù)據(jù)可知三種方法的圖像質(zhì)量基本相同;2)碼流大小方面,PP輸出的碼流比T1不但沒有增加,甚至還減小了,而T2的碼流比T1最多增大了9.62%。
綜上所述,新方法是在保持與T1相同的壓縮效率的情況下,將切入速度提高為T1的5倍。
本文提出一種新的可快速切入H.264/AVC視頻的編碼方法,該方法通過H.264/AVC標(biāo)準(zhǔn)所提供的多參考幀和內(nèi)存管理控制操作等機制得以實現(xiàn)。
表2 PP,T1和T2對比數(shù)據(jù)表
理論分析及實驗結(jié)果表明:現(xiàn)有的H.264/AVC解碼器,不須任何修改,就可直接解碼由新方法生成的碼流;并且新方法在壓縮效率不變的情況下可將切入速度提高5倍以上。
本方法還允許更為深入的靈活設(shè)置。例如,切入幀的間隔可以不固定,任何新觀眾發(fā)出切入請求時,就將當(dāng)時的待編碼幀指定為切入幀,這就允許視頻編碼服務(wù)器即時響應(yīng)新觀眾的請求,使得切入時間趨近于0。
可見,本文所提交的方法以極低的代價實現(xiàn)了視頻編碼服務(wù)器對用戶需求的快速響應(yīng)能力。
[1]Joint Draft ITU-T Rec.H.264 ISO/IEC 14496-10/Amd.3 scalable video coding[EB/OL].[2012-07-14].http://ip.hhi.de/imagecom_G1/savce/downloads/H.264-MPEG4-AVC-Version8-FinalDraft.pdf.
[2]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):560-576.
[3]RICHARDSON I E G.H.264 and MPEG-4 video compression[EB/OL].[2012-07-14].http://ishare.iask.sina.com.cn/f/9982600.html.
[4]RICHARDSON I E G.H.264_MPEG-4 Part 10 white paper[EB/OL].[2012-07-14].http://www.vcodex.com.
[5]鐘似玢,曾嘉亮.一種視頻壓縮方法:中國,200810216851.4[P].2008-10-15.