當前流行的應該還算是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 |