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