屈竹杰
帶寬危機(jī),H.265救駕
數(shù)字視頻的超高清潮流奔騰向前,幀率從30fps向60fps、120fps甚至240fps進(jìn)發(fā),與此同時(shí),物理媒介日薄西山,內(nèi)容正通過有形無形的網(wǎng)絡(luò)在世界各個(gè)角落的終端設(shè)備上傳遞。高度密集的數(shù)據(jù)給帶寬和存儲(chǔ)帶來巨大挑戰(zhàn),當(dāng)前主流的H.264開始不敷應(yīng)用,而新一代視頻編碼標(biāo)準(zhǔn)H.265似乎成為了數(shù)字4K時(shí)代的“救世主”。
H.265又稱為HEVC(全稱High Efficiency Video Coding,高效率視頻編碼,本文統(tǒng)稱為H.265),是ITU-T H.264/MPEG-4 AVC標(biāo)準(zhǔn)的繼任者。2004年由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)作為ISO/IEC 23008-2 MPEG-H Part 2或稱作ITU-T H.265開始制定。第一版的HEVC/H.265視頻壓縮標(biāo)準(zhǔn)在2013年4月13日被接受為國際電信聯(lián)盟(ITU-T)的正式標(biāo)準(zhǔn)。
理論上H.265比H.264效率提高30-50%(尤其是在更高的分辨率情形下),但真的只是這么簡(jiǎn)單嗎?
H.265的改變
H.265重新利用了H.264中定義的很多概念。兩者都是基于塊的視頻編碼技術(shù),所以它們有著相同的根源和相近的編碼方式,包括:
1、以宏塊來劃分圖片,并最終以塊來細(xì)分。
2、使用幀內(nèi)壓縮技術(shù)減少空間冗余。
3、使用幀內(nèi)壓縮技術(shù)減少時(shí)間冗余(運(yùn)動(dòng)估計(jì)和補(bǔ)償)。
4、使用轉(zhuǎn)換和量化來進(jìn)行殘留數(shù)據(jù)壓縮。
5、使用熵編碼減少殘留和運(yùn)動(dòng)矢量傳輸和信號(hào)發(fā)送中的最后冗余。
事實(shí)上,視頻編解碼從MPEG-1誕生至今都沒有根本性改進(jìn),H.265也只是H.264在一些關(guān)鍵性能上的更強(qiáng)進(jìn)化以及簡(jiǎn)單化。
那么問題來了,H.265到底強(qiáng)在哪里?
和H.264一樣,H.265也可以根據(jù)帶寬需求進(jìn)行調(diào)節(jié)。但你是想在普通互聯(lián)網(wǎng)上傳輸4K內(nèi)容,還是要實(shí)現(xiàn)最好的圖像質(zhì)量,就要厘清“更多的壓縮”和“更好的壓縮”這兩個(gè)概念。如果只是更多的壓縮,4K和超高清不一定要保證比今天的1080p或HD做到更好的圖片質(zhì)量。根據(jù)壓縮數(shù)量的多少,流媒體4K有可能看起來比現(xiàn)在的1080p藍(lán)光更糟糕,因?yàn)?080p藍(lán)光相比在線流媒體會(huì)有更多的帶寬留給視頻。更好的壓縮則意味著更聰明的壓縮,面對(duì)同樣的原始素材,更好的壓縮會(huì)以更好的方式,在不犧牲質(zhì)量的情況下令數(shù)據(jù)量減少。更多的壓縮很容易,而更好的壓縮需要更多的思考和更好的技術(shù),通過更智能的算法來處理圖像,在維持質(zhì)量的同時(shí)保持更低的比特率,這正是H.265所要做的。
如何實(shí)現(xiàn)更好的壓縮,舉例來講,我們通常會(huì)發(fā)現(xiàn)在很多的圖像素材里,如視像會(huì)議或者電影的很多場(chǎng)景中,每一幀上的大部分內(nèi)容并沒有改變太多,視像會(huì)議中一般只有講話者的頭在動(dòng)(甚至只有嘴唇在動(dòng)),而背景一般是不動(dòng)的,在這種情況下,我們的做法不是對(duì)每一幀的每一個(gè)像素編碼,而是對(duì)最初的幀編碼,然后僅對(duì)發(fā)生改變的部分進(jìn)行編碼。
H.265正從以下幾個(gè)方面向著“更好的壓縮”邁進(jìn)。
圖像分區(qū)
H.265將圖像劃分為“編碼樹單元(coding tree Unit,CTU)”,而不是像H.264那樣的16×16的宏塊。根據(jù)不同的編碼設(shè)置,編碼樹單元的尺寸可以被設(shè)置為64×64或有限的32×32或16×16。很多研究都顯示更大的編碼樹單元可以提供更高的壓縮效率(同樣也需要更高的編碼速度)。每個(gè)編碼樹單元可以被遞歸分割,利用四叉樹結(jié)構(gòu),分割為32×32、16×16、8×8的子區(qū)域,下圖就是一個(gè)64×64編碼樹單元的分區(qū)示例。每個(gè)圖像進(jìn)一步被區(qū)分為特殊的樹編碼塊組,稱之為切割(Slices)和拼貼(Tiles)。編碼樹單元是H.264的基本編碼單位,如同H.264的宏塊。編碼樹單元可向下分為編碼單元(Coding Unit,CU)、預(yù)測(cè)單元(Prediction Unit,PU)及轉(zhuǎn)換單元(Transform Unit,TU)。
每個(gè)編碼樹單元內(nèi)包含1個(gè)亮度與2個(gè)色度編碼樹塊,以及記錄額外信息的語法元素。一般來說影片大多是以YUV 4:2:0色彩采樣進(jìn)行壓縮,因此以16×16的編碼樹單元為例,其中會(huì)包含1個(gè)16×16的亮度編碼樹區(qū)塊,以及2個(gè)8×8的色度編碼樹區(qū)塊。
轉(zhuǎn)換尺寸
每個(gè)編碼單元可以四叉樹的方式遞歸分割為轉(zhuǎn)換單元。與H.264主要以4×4轉(zhuǎn)換,偶爾以8×8轉(zhuǎn)換所不同的是,H.265有若干種轉(zhuǎn)換尺寸:32×32、16×16、8×8和4×4。從數(shù)學(xué)的角度來看,更大的轉(zhuǎn)換單元可以更好地編碼靜態(tài)信號(hào),而更小的轉(zhuǎn)換單元可以更好地編碼更小的“脈沖”信號(hào)。
預(yù)測(cè)單元
在轉(zhuǎn)換和量化之前,首先是預(yù)測(cè)階段(包括幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè))。
一個(gè)編碼單元可以使用以下八種預(yù)測(cè)模式中的一種進(jìn)行預(yù)測(cè)。
即使一個(gè)編碼單元包含一個(gè)、兩個(gè)或四個(gè)預(yù)測(cè)單元,也可以使用專門的幀間或幀內(nèi)預(yù)測(cè)技術(shù)對(duì)其進(jìn)行預(yù)測(cè),此外內(nèi)編碼的編碼單元只能使用2N×2N或N×N的平方劃分。間編碼的編碼單元可以使用平方和非對(duì)稱的方式劃分。
幀內(nèi)預(yù)測(cè):H.265有35個(gè)不同的幀內(nèi)預(yù)測(cè)模式(包括9個(gè)AVC里已有的),包括DC模式、平面(Planar)模式和33個(gè)方向的模式。幀內(nèi)預(yù)測(cè)可以遵循轉(zhuǎn)換單元的分割樹,所以預(yù)測(cè)模式可以應(yīng)用于4×4、8×8、16×16和32×32的轉(zhuǎn)換單元。
幀間預(yù)測(cè):針對(duì)運(yùn)動(dòng)向量預(yù)測(cè),H.265有兩個(gè)參考表:L0和L1。每一個(gè)都擁有16個(gè)參照項(xiàng),但是唯一圖片的最大數(shù)量是8。H.265運(yùn)動(dòng)估計(jì)要比H.264更加復(fù)雜。它使用列表索引,有兩個(gè)主要的預(yù)測(cè)模式:合并和高級(jí)運(yùn)動(dòng)向量。
在編碼的過程,預(yù)測(cè)單元是進(jìn)行預(yù)測(cè)的基本單元,轉(zhuǎn)換單元是進(jìn)行轉(zhuǎn)換和量化的基本單元。這三個(gè)單元的分離,使得轉(zhuǎn)換、預(yù)測(cè)和編碼各個(gè)處理環(huán)節(jié)更加靈活。
去塊化
與H.264在4×4塊上實(shí)現(xiàn)去塊化所不同的是,HEVC的只能在8×8網(wǎng)格上實(shí)現(xiàn)去塊。這就能允許去塊的并行處理(沒有濾波器重疊)。首先去塊的是畫面里的所有垂直邊緣,緊接著是所有水平邊緣。與H.264采用一樣的濾波器。采樣點(diǎn)自適應(yīng)偏移
去塊之后還有第二個(gè)可選的濾波器,叫做采樣點(diǎn)自適應(yīng)偏移。它類似于去塊濾波器,應(yīng)用在預(yù)測(cè)循環(huán)里,結(jié)果存儲(chǔ)在參考幀列表里。這個(gè)濾波器的目標(biāo)是修訂錯(cuò)誤預(yù)測(cè)、編碼漂移等,并應(yīng)用自適應(yīng)進(jìn)行偏移。
并行處理
由于HEVC的解碼要比AVC復(fù)雜很多,所以一些技術(shù)已經(jīng)允許實(shí)現(xiàn)并行解碼。最重要的為拼貼和波前。圖像被分成樹編碼單元的矩形網(wǎng)格(Tiles)。當(dāng)前芯片架構(gòu)已經(jīng)從單核性能逐漸往多核并行方向發(fā)展,因此為了適應(yīng)并行化程度非常高的芯片實(shí)現(xiàn),H.265引入了很多并行運(yùn)算的優(yōu)化思路。
總而言之,HEVC將傳統(tǒng)基于塊的視頻編碼模式推向更高的效率水平,總結(jié)一下就是:
-可變量的尺寸轉(zhuǎn)換(從4×4到32×32)。
-四叉樹結(jié)構(gòu)的預(yù)測(cè)區(qū)域(從64×64到4×4)。
-基于候選清單的運(yùn)動(dòng)向量預(yù)測(cè)。
-多種幀內(nèi)預(yù)測(cè)模式。
-更精準(zhǔn)的運(yùn)動(dòng)補(bǔ)償濾波器。
-優(yōu)化的去塊、采樣點(diǎn)自適應(yīng)偏移濾波器等。