H264 NALU結構

當前流行的應該還算是h264,接下來中國廣播電視會使用avs,而國際上應該會使用h265(要收專利費)和Google的VP9(開源,無專利費)

 

一個h264視頻由N組GOP(group of picture)組成,GOP由一幀一幀被編碼的圖像組成,一幀編碼圖像由一個片(slice)或多個片組成,一個片由一個或多個宏塊(MB,macroblock)組成。對於h264來說,宏塊大小固定爲16*16(16*16的Y+8*8的Cb+8*8的Cr);

//h265的宏塊大小則是根據圖像信息由8*8到64*64變化;

 

H264結構上可以分爲:

VCL (video codec layer)        視頻編碼層

NAL (network abstractionlayer)網絡提取層

 

其主要優勢是兼具良好的視頻壓縮比和網絡親和性;

 

H264編碼過程中有三種不同的數據形式:

SODB: 數據比特串,及VCL數據;

RBSP: 原始字節序列載荷,由SODB後面添加結尾bit,1bit的1,加若干bit的0,加0是爲了字節對齊;

EBSP: 擴展字節序列載荷,由RBSP基礎上添加仿校驗字節(0x03);(Annexb封裝方式)

 

 

H264在網絡上傳輸的結構爲NALU,即NAL unit,其結構爲:NAL頭+RBSP;實際傳輸的數據格式如下:

NALU header

RBSP

NALU header

RBSP

NALU header

RBSP

 

NALU頭的結構(1byte):

Forbidden_bit(1bit) + nal_reference_bit(2bit)+ nal_unit_type(5bit)

結構圖示例:

Forbidden_bit(1bit)

Nal_refference_bit(2bit)

Nal_unit_type(5bit)

 

1、  forbidden_bit 禁止位,初始爲0,當網絡發現NAL單元由bit錯誤時,可設置該bit爲1,以方便糾錯或丟掉該單元;

2、  nal_reference_bit nal重要性,標誌該nal單元的重要性,值越大,越重要,解碼器在解碼性能不夠時會丟掉重要性爲0的NAL單元;

3、  nal_unit_type NALU RBSP部分的數據類型

 

NALU列表:

nal_unit_type

NAL類型

nal_reference_bit

0

未使用

0

1

非IDR片

此片屬於參考幀,則不等於0;不屬於參考幀,則等於0;

2

片數據A分區

同上

3

片數據B分區

同上

4

片數據C分區

同上

5

IDR圖像的片

5

6

補充增強信息單元(SEI)

非0

7

序列參數集

非0

8

圖像參數集

0

9

分界符

0

10

序列結束

0

11

碼流結束

0

12

填充

0

13~23

保留

0

24~31

不保留

0

 


發佈了36 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章