H264基礎概念

一、MPEG-4說明
1、VOP視頻編碼技術
VO(Video Object):視頻對象,它是場景中的某個物體,最簡單的情況下就是矩形框,它是有生命期的,由時間上連續的許多幀構成。
VOP(Video Object Plane):視頻對象平面,它可以看作是VO在某一時刻的採樣,即一幀VO。

2、運動估計與運動補償技術
I-VOP、P-VOP、B-VOP三種幀格式來表徵不同的運動補償類型。
幀內VOP(I-VOP):一個VOP與其他VOP分開編碼。
預測VOP(P-VOP):VOP可以基於前一個解碼後的VOP進行預測(利用運動補償)。
雙向內插VOP(B-VOP):VOP可以用過去的和未來VOP進行預測,B-VOP只能基於I-VOP和P-VOP進行插值。

二、H264說明
1、H264編碼的框架分兩層
VCL(Video Coding Layer):負責高效的視頻內容表示
NAL(Network Abstraction Layer):負責以網絡所要求的恰當的方式對數據進行打包和傳送

2、重要變化
在H264中完全沒有I幀、P幀、B幀、IDR幀的概念,之所以沿用這些說法是爲了表明數據的編碼模式。數據的組織形式從大到小排序是:序列(sequence)、圖像(frame/field-picture)、片組(slice group)、片(slice)、宏塊(macroblock)、塊(block)、子塊(sub-block)、像素(pixel)。

3、數據組織形式
片(slice):圖像分成一幀(frame)或兩場(field),而幀又可以分成一個或幾個片(slice),片由宏塊組成。宏塊是編碼處理的基本單元。一個slice編碼之後被打包進一個NALU,NALU除了容納slice還可以容納其它數據,如SPS、PPS、SEI等

4、編碼相關術語
NALU:H264編碼數據存儲或傳輸的基本單元,一般H264碼流最開始的兩個NALU是SPS和PPS,第三個NALU是IDR。SPS、PPS、SEI這三種NALU不屬於幀的範疇。
SPS(Sequence Parameter Sets):序列參數集,作用於一系列連續的編碼圖像。
PPS(Picture Parameter Set):圖像參數集,作用於編碼視頻序列中一個或多個獨立的圖像。
SEI(Supplemental enhancement information):附加增強信息,包含了視頻畫面定時等信息,一般放在主編碼圖像數據之前,在某些應用中,它可以被省略掉。
IDR(Instantaneous Decoding Refresh):即時解碼刷新
HRD(Hypothetical Reference Decoder):假想碼流調度器

5、幀編碼模式

幀類型 描述 支持的框架
I(Intra) 只包含幀內預測的宏塊(I) 全部
P(Predicted) 包含幀間預測宏塊(P)和I型宏塊 全部
B(Bi-Predictive) 包含幀間雙向預測宏塊(B)和I型宏塊 擴展和主
SP(Switching P) 利於在編碼的比特流中切換,包括I和P宏塊 擴展
SI(Switching I) 利用在編碼的比特流中切換,包含SI宏塊(一種特殊的幀內編碼宏塊) 擴展

6、H264和AVC1的差異
FOURCC AVC1:H264 bitstream without start codes
FOURCC H264:H264 bitstream with start codes
帶有開始碼的H264視頻一般是用於無線發射、有線廣播或者HD-DVD中,這些數據流的開始都有一個開始碼0x000001或者0x00000001,“NALU”是NAL(網絡適配層)以網絡所要求的恰當方式對數據進行打包和發送的基本單元;

沒有開始碼的H264視頻主要是存儲在MP4格式的文件中,它的數據流的開始是1、2或者4個字節表示長度數據,“NALU”簡單說是H264格式中的最基本的單元,是一個數據包。

三、H.264、x264、H264、AVC1區別和聯繫

1、H.264是MPEG4的第十部分,是一個標準。
國際上兩個視頻專家組(VCEG和MPEG)合作提出的標準,兩個專家組各有各的叫法,所以既叫H.264,也叫AVC。

2、x264是一個編碼器,他參照的標準是H.264。
H.264是需要付費的編碼格式,而x264是符合H.264標準的一個開源項目,是免費的,也就是H264的一個簡化版,不支持某些高級特性。但x264非常優秀,並不比H264的商業編碼器差。

3、h264與AVC1都是FourCC(他倆通常在什麼情況下使用呢?)
FOURCC爲AVC1,沒有開始碼的H.264視頻,主要就是用MP4或MKV等封裝的文件,也就是你平時在電腦上看的那種,它的數據流開始是1、2或者4個字節表示長度數據。x264編碼出來的都是這種。
FOURCC爲H264,是帶有開始碼的H.264視頻,一般是用於無線發射、有線廣播或者HD-DVD中的。這些數據流的開始都有一個開始碼:0x000001 或者 0x00000001。

4、如果在編碼符合H.264標準的文件時,如果沒有用到x264編碼器,那麼通常使用的是哪個編碼器?(就是那個支持顯卡加速的那個)
符合H.264標準的編碼器,也就是H.264的商業編碼器,和免費的x264了。
至於支持顯卡加速的編碼格式,根據顯卡不同,支持的也不一樣。大概也就是H264(x264/AVC1)、VC-1、MPEG-1、MPEG-2、MPEG-4、WMV3。。。當然除了H264(x264/AVC1),其他都不是H.264標準的


四、網址引用

3.3.2 H264編碼技術
http://book.51cto.com/art/200804/70271.htm

3.4.1 MPEG-4結構分析
http://book.51cto.com/art/200804/70331.htm

H264/AVC視頻解碼時AVC1和H264的區別
http://blog.csdn.net/ameyume/article/details/7542979

關於H.264 x264 h264 AVC1之間的那些事
http://zhidao.baidu.com/question/526734824.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章