目前,H.264是主流的視頻編碼標準。我們看到的賽事電視直播、MP4和MKV格式的電影或者點播的在線視頻,都需要首先使用H.264編碼器壓縮成“連續(xù)的圖片”,然后利用設備上的H.264解碼器解碼并以“視頻”形式播放。2013年1月,下一代標準H.265,也稱為HEVC(High Efficiency Video Coding)的標準已完成。與H.264相比,它最高可提升50%的編碼效率,這意味著同樣畫面質量的視頻僅需使用原來一半的比特率,或者說同樣比特率下畫面質量可提升兩倍。H.265并不是全新發(fā)明的標準,它是H.264技術的改進版,其編解碼需要更強的運算能力。
更好也更耗資源
實際上,視頻是由一系列連續(xù)的單張圖片(幀)組成的。視頻編碼的過程是,首先編碼器將每一幀圖片切割為更小的、固定大小的區(qū)塊(block),然后將每個區(qū)塊的色度和亮度轉換為頻率值,這種量化的過程也是壓縮數(shù)據(jù)即刪除重復數(shù)據(jù)的過程。最終,連續(xù)的圖片被打包為類似ZIP的壓縮文檔,這是編碼器的基本工作原理。鑒于連續(xù)幀之間的變化通常極小,因此MPEG標準引入了一種關鍵的算法——幀間預測(inter-frame prediction)?;谠撍惴ǎ曨l編碼器會將幾個相似的連續(xù)幀組成一個圖像組(Group of Pictures,GOP),每個GOP的首幀會保留全部的圖像頻率值,其他幀則通過差值計算來獲得自己的頻率值。
H.264標準在幀間預測外,引入了幀內預測(intra-frame prediction)算法。H.264編碼器并不編碼所有區(qū)塊的頻率值,而是根據(jù)相鄰像素的差值來計算。例如,包含一大片藍天的畫面可被大幅壓縮,因為畫面中相鄰像素的色度及亮度值幾乎完全相同。H.264的單幀壓縮效率比JPEG圖像高50%。編碼器的目標是找出更多相似的區(qū)塊,但編碼效率要求越高,所需的運算能力也越高。
H.265同樣采用幀間和幀內預測算法,但與H.264相比,它的編碼器工作效率更高。因為H.265沒有采用固定的編碼區(qū)塊大小設計。之前視頻編碼的基本編碼單位——宏塊(macroblock)的大小通常是16×16像素。H.265編碼器選擇了編碼樹單元(coding tree unit,CTU)的設計方案,編碼器會視情況設定編碼樹單元的大小,包含16×16像素(適合低分辨率視頻)、32×32像素和64×64像素(適合高清電影)3種尺寸。
每個編碼樹單元又被切割為若干編碼單元(Coding Units,CU),切割方式有兩種,或等分為4個子區(qū)塊,或保留原始尺寸,因此編碼單元的大小在8×8像素到64×64像素之間。同編碼樹單元一樣,編碼單元包含1個亮度和2個色度編碼區(qū)塊(Coding Blocks,CB)。編碼區(qū)塊還將進一步被切割為預測區(qū)塊(Prediction Blocks,PB)。在細節(jié)豐富的電影中,H.265編碼器復雜的細分過程,保證了其算法仍能找出足夠多的相似區(qū)塊,刪除重復區(qū)塊,從而獲得較高的壓縮效率。
優(yōu)化編碼技術
無論是H.264還是H.265,將畫面切割為宏塊或編碼樹的目的都是類似的,其中之一就是要進行動態(tài)補償,它是幀間預測步驟中相當重要的一環(huán)。簡單地說,動態(tài)補償就是比對不同的畫面,從中找出相同的部分予以刪除,只記錄有變動的部分,來達到節(jié)省數(shù)據(jù)流量的目的。動態(tài)補償?shù)膶嶋H方法也不難理解,編碼器在把畫面切割之后,會抓取各區(qū)塊與其他幀進行比對,分析各區(qū)塊中的內容是否有所變化,以及各內容移動的方向和距離。如果內容沒有變化,那么該區(qū)塊就可以延用其他幀中的數(shù)據(jù),如果內容產(chǎn)生移動,則只需將移動的方向與距離記錄為動態(tài)向量,就可以省去記錄完整畫面數(shù)據(jù)所需的時間。然而,H.265增加了畫面切割的靈活性,需要更多的計算性能。
在解碼方面,H.265支持并行處理技術。新引入的波前平行運算(wavefront parallel processing)算法將畫面分割為以橫行為單位的CTU群組,所有橫行可同時解碼。對采用1080p分辨率、64×64像素CTU的視頻來說,解碼器最多可以用16個線程并行計算。
目前市面上還沒有免費的H.265編碼器,但是主流的專業(yè)視頻剪輯軟件在2013年秋天的升級中就會增加對H.265編碼的支持。H.265的解碼器則要簡單很多,新的平板電腦或智能手機只要升級系統(tǒng)或固件就可以支持該標準。用不了多久,高清電視也會支持H.265,因為H.264標準已經(jīng)無法滿足4K2K分辨率高清視頻的需求。