H.264可擴(kuò)展視頻編解碼器(SVC)應(yīng)用詳解
為了實(shí)現(xiàn)臨時(shí)的可擴(kuò)展性,H.264 SVC鏈接其參考幀以及預(yù)測(cè)幀,這與傳統(tǒng)的H.264 AVC編碼器稍微不同。SVC采用分層預(yù)測(cè)結(jié)構(gòu),如圖3所示,而不是傳統(tǒng)的內(nèi)幀(I幀)、雙向幀(B幀)以及預(yù)測(cè)幀(P幀)的關(guān)系。
圖3:傳統(tǒng)的I、P和B幀的關(guān)系。
分層結(jié)構(gòu)定義最終視頻流的臨時(shí)分層。圖4描述了可能的分層結(jié)構(gòu)。在這個(gè)特殊的例子中,各幀僅僅根據(jù)上次出現(xiàn)的各幀進(jìn)行預(yù)測(cè)。這就確保該結(jié)構(gòu)不僅僅展示臨時(shí)的可擴(kuò)展性,而且顯示了低的延遲。
圖4:在SVC中的分層預(yù)測(cè)幀。
這個(gè)方案具有四個(gè)嵌套的臨時(shí)層:T0 (基礎(chǔ)層)、T1、T2和T3。由T1和T2各層構(gòu)成的幀僅僅由T0層中的各幀預(yù)測(cè)。在T3層中的各幀僅僅由T1或T2各層中的各幀來(lái)預(yù)測(cè)。
為了以3.75幀每秒的速度播放編碼幀,僅僅構(gòu)成T0的各幀需要被解碼。所有的其它各幀可以被丟棄。為了以7.5fps的速度播放,要對(duì)構(gòu)成T0以及T1的各層進(jìn)行解碼。在T2和T3中的各幀被丟棄。類似地,如果構(gòu)成T0、T1和T2的各幀被解碼,所得到的視頻流將以15fps的速度播放。如果所有幀均被解碼,那么,完全的30fps視頻流被恢復(fù)。
相比之下,在H.264 SVC(對(duì)于Baseline Profile來(lái)說(shuō),僅僅雙向預(yù)測(cè)幀被應(yīng)用)中,不管需要的顯示率是什么,所有幀均需被解碼。為了轉(zhuǎn)換至一個(gè)低帶寬網(wǎng)絡(luò),整個(gè)視頻流均需要被解碼,不需要的幀可以被丟棄,然后,重新編碼。
在H.264 SVC中的空間可擴(kuò)展性遵循類似的原則。在這一情形下,較低分辨率的各幀被編碼為基礎(chǔ)幀。經(jīng)解碼和上行采樣的基礎(chǔ)幀被用于對(duì)較高階各層進(jìn)行預(yù)測(cè)。重構(gòu)原始場(chǎng)景細(xì)節(jié)所需要的附加信息被編碼為一個(gè)獨(dú)立的增強(qiáng)層。在某些情形下,重用運(yùn)動(dòng)信息能夠進(jìn)一步增加編碼效率。
同時(shí)聯(lián)播與SVC
在H.264 SVC中存在于可擴(kuò)展性相關(guān)的開(kāi)銷。正如我們?cè)趫D3中所看到的那樣,參考幀與預(yù)測(cè)幀之間的距離在時(shí)間(例如從T0至T1)上比傳統(tǒng)的幀結(jié)構(gòu)要長(zhǎng)。在具有高運(yùn)動(dòng)圖像的場(chǎng)景中,這能夠?qū)е滦噬缘偷膲嚎s。為了對(duì)視頻流各層級(jí)結(jié)構(gòu)進(jìn)行管理,也存在相關(guān)的開(kāi)銷。
整體而言,跟不具備可擴(kuò)展性的全分辨率以及全幀速率視頻構(gòu)成的H.264視頻流相比,具有三層臨時(shí)可擴(kuò)展性以及三層空間可擴(kuò)展性的SVC視頻可能要大20%以上。如果采用H.264 編解碼器對(duì)可擴(kuò)展性進(jìn)行仿真,就需要多個(gè)編碼視頻流,從而導(dǎo)致更高的帶寬要求或貫穿網(wǎng)絡(luò)的昂貴解碼和二次編碼。
SVC的額外好處:
誤碼恢復(fù)
誤碼恢復(fù)的傳統(tǒng)實(shí)現(xiàn)方法是把附加的信息添加至視頻流之中,以便監(jiān)測(cè)和校正誤碼。SVC的分層方法意味著不需要增加大的開(kāi)銷,就可以在較小的基本層上執(zhí)行高級(jí)別的誤碼監(jiān)測(cè)和校正。如果要把相同程度的誤碼監(jiān)測(cè)和校正功能應(yīng)用于AVC視頻流中,那就需要把整個(gè)視頻流保護(hù)起來(lái),從而導(dǎo)致視頻流更大。如果在SVC視頻流中監(jiān)測(cè)出誤碼,那么,就可以逐漸讓分辨率和幀速率退化,直至―如果需要的話―只有高度受保護(hù)的基礎(chǔ)層才可以使用。按照這一方式,在噪聲條件下的退化要比在H.264 AVC環(huán)境下更讓人可以接受。
存儲(chǔ)管理
評(píng)論