天天看點

H.264/AVC簡介1、MPEG-42、H.264/AVC

從這一篇開始,我們将介紹H.264/AVC。在前幾篇裡,我們分别介紹了MPEG-1和MPEG-2,按照順序考慮下來,我們該會疑問,接下來不應該是MPEG-3嘛?沒錯,事實上MPEG-3确實有,它是在MPEG-2之後,制定的應用在HDTV上的音視訊标準。但是由于MPEG-2大獲成功,已經可以滿足需求,是以MPEG-3就被融合進了MPEG-2。

那我們又該有疑問了,那接下來也不應該是H.264/AVC吧,應該是MPEG-4才對呀,這就涉及到我們今天的話題。是以在講H.264/AVC之前,我們就來聊聊MPEG-4。

1、MPEG-4

MPEG-4也稱視聽對象編碼(Coding of audio-visual objects)标準,注意跟MPEG-1和MPEG-2相比,它多了對象兩個字。它不僅吸收了MPEG-1和MPEG-2的許多特性,并且引入了視聽對象(audio-visual objects)編碼的概念。這裡我們不用管視聽對象具體是指什麼,因為它并不會在接下來的H.264/AVC中出現。為什麼呢?這就涉及到MPEG-4的組成部分了。

就像MPEG-1和MPEG-2一樣,MPEG-4由多個部分組成。而因為MPEG-4應用之廣,它在1998年第一版釋出之後,又在1999年釋出了第二版,并且在2000年正式成為國際标準,而且即使現在,也在不斷更新和完善。介紹這一段的主要目的,不是為了說明MPEG-4有多牛逼,而是為了說明,正因如此,MPEG-4的多個部分,也有先來後到。比如Part 1和Part 31,Part 1肯定是最早釋出的,而Part 31,直到最近也就是2014年才釋出。

MPEG-4不隻是一個音視訊編解碼标準,它還是多媒體的應用标準。它的内容包括,音視訊編解碼、字幕流文本格式、字型壓縮、3D圖形壓縮、Web視像編碼等。由此可見MPEG-4的範圍之廣,由于它的研究課題很多,大多數人并不會全盤學習。比如我們,隻關心音視訊編解碼部分,而這部分對應的Part分别為:Part 2(Visual)、Part 3(Audio)、Part 10(AVC)、Part 14(MP4),當然為了了解MPEG-4,還會看一下Part 1(system),也就是系統部分。

注意到Part 2和Part 3,分别是視像和聲音部分,而這兩部分,也是最早釋出的版本裡囊括的。而我們前面說的對象編碼,就應用在Part 2(Visual)裡。是以當我們說MPEG-4可視對象編碼的時候,一般指MPEG-4 Visual,也就是ISO/IEC 14496-2 Part2,其中14496是指MPEG-4标準的編号,2就是隻Part 2,合起來就是14496-2。 如下圖:

H.264/AVC簡介1、MPEG-42、H.264/AVC

圖中标紅框的,是它們的第一次發版的時間,可以追溯到1999年,也就是MPEG-4的第二版就釋出了。

不過我們并不準備把精力放在MPEG-4 Visual上,因為在如今的實際應用中,還是H.264/AVC比較流行。我們前幾篇之是以講MPEG-1和MPEG-2,是因為它們能夠為了解H.264/AVC提供幫助,但是MPEG-4 Visual包含新的對象編碼的知識,對了解H.264/AVC幫助較小,是以我們直接忽略,有興趣的自行翻閱資料即可。下面我們就開始介紹今天的主角:H.264/AVC

2、H.264/AVC

有的同學可能會覺得跳躍有點快,剛才還在說MPEG-4呢,怎麼一下跳到H.264/AVC了。首先,這種感覺是正常的,因為我還沒介紹一個關鍵的資訊。從這篇文章開頭開始,我們在講H.264/AVC的時候,都一直在把H.264 和 AVC連在一起寫出來,這樣寫其實是和它的起源有直接意義的。

我們在上面講MPEG-4的幾個比較重要的部分(Part)時,除了Part 2、Part 3,還有Part 10(AVC)和Part 14(MP4),Part 14一看就知道,這不就是大名鼎鼎的MP4格式嘛(關于MP4我們後面再介紹)。而另一個Part 10,後面備注為AVC,難道它跟H.264/AVC有關系?

恩,沒錯,你猜對啦,事實确實是這樣。

H.264/AVC簡介1、MPEG-42、H.264/AVC

MPEG-4 Part 10

這是維基百科上,關于MPEG-4 Part 10的介紹,請看标紅框備注部分:一種視訊信号壓縮格式,在技術上和ITU-T H.264是一樣的。而AVC的意思是,Advanced Video Coding,也就是進階視訊編碼。它是在2003年釋出的,這與我們在MPEG-1中,展示的編碼年表也是契合的:

H.264/AVC簡介1、MPEG-42、H.264/AVC

國際視像編碼年表

這樣來看,ITU-T H.264和MPEG-4 AVC其實就是一個标準。之是以是一個标準,是因為它是由ITU-T VCEG(Video Coding Experts Group)專家組,和MPEG專家組,聯合開發的,是以才産生了H.264/AVC這樣的叫法。

H.264/AVC應用非常廣泛,它可以把原始的RGB或YUV像素資料,編碼為h.264裸流,而基于h.264裸流,我們還可以把它封裝為MP4、MKV等格式儲存至本地,還可以使用傳輸協定進行打包,在網際網路上進行傳輸。這就是H.264/AVC目前的主流應用,當然這一段看不懂也沒關系,因為我們隻是稍微展望前方的知識路徑。

H.264/AVC相比之前的編碼标準,比如MPEG-1、MPEG-2,在結構上并沒有明顯改變。但是它的編碼效率卻比它們高出不少,這是為什麼呢?那是因為H.264/AVC在之前的标準上,進行了很多改進,尤其是在各個主要功能子產品。雖然這些改動并不大,但是這些改進卻成為精華,使H.264/AVC的壓縮效率,是MPEG-2的2~3倍。有效的降低了在網絡上傳輸視訊資料的成本,并且之前使用MPEG-2的DVD和數字電視,也轉向了H.264/AVC。

下面就是H.264/AVC的主要改進:

(1)幀間預測: 采用可變圖塊的幀間預測和移動補償,注意是可變圖塊,之前标準的預測圖塊大小為16x16像素,而改進了之後,預測圖塊可小到4x4像素。這樣一來,移動矢量的預測精度就提高了。

(2)幀内預測: 幀内預測圖塊的大小,改進成了可以為16x16的宏塊,也可以是4x4像素的圖塊,而且定義了多種預測方式。這樣做,就是為了找到最佳比對的預測圖塊。

(3)采用整數變換: 這是從DCT演變來的變換,可以提高運算速度。

(4)采用CAVLC和CABAC熵編碼: 名稱不用強記,隻需知道它們都屬于熵編碼,并且比VLC(Variable Length Coding/可變長度編碼)的編碼效率高就可以了。

(5)采用多參考幀和消除塊狀失真的濾波技術: 塊狀失真就是指當壓縮率過高時,會導緻重構圖像出現塊狀外觀現象。而消除這一現象使用的濾波技術,如果你不打算深入學習數字圖像處理,可以先不用管。

可以看到,這些改進裡雖然動靜不大,但是每一個都影響較大。尤其是前1、2條,16x16的預測圖塊,可以小到4x4,這畢然會使移動矢量的預測精度大大提高,進而影響一組預測圖像,這就類似蝴蝶效應的威力!

繼續閱讀