h264 流、幀結構
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
表1 NAL單元格式
NAL頭
RBSP
NAL頭
RBSP
RBSP:封裝于網絡抽象單元的數據稱之為原始字節序列載荷RBSP,它是NAL的基本傳輸單元。其中,RBSP又分為視頻編碼數據和控制數據。其基本結構是:在原始編碼數據的后面填加了結尾比特。一個bit“1”若干比特“0”,以便字節對齊。
RBSP的類型:
RBSP 類型之一 PS: 包括序列參數集 SPS 和 圖像參數集 PPS
SPS 包含的是針對一連續編碼視頻序列的參數,如標識符 seq_parameter_set_id、幀數及 POC 的約束、參考幀數目、解碼圖像尺寸和幀場編碼模式選擇標識等等。
PPS對應的是一個序列中某一幅圖像或者某幾幅圖像,其參數如標識符 pic_parameter_set_id、可選的 seq_parameter_set_id、熵編碼模式選擇標識、片組數目、初始量化參數和去方塊濾波系數調整標識等等。 NALU類型
標識NAL單元中的RBSP數據類型,其中,nal_unit_type為1, 2, 3, 4, 5及12的NAL單元稱為VCL的NAL單元,其他類型的NAL單元為非VCL的NAL單元。
0:未規定
1:非IDR圖像中不采用數據劃分的片段
2:非IDR圖像中A類數據劃分片段
3:非IDR圖像中B類數據劃分片段
4:非IDR圖像中C類數據劃分片段
5:IDR圖像的片段
6:補充增強信息 (SEI)
7:序列參數集
8:圖像參數集
9:分割符
10:序列結束符
11:流結束符
12:填充數據
13 – 23:保留
24 – 31:未規定 2. H.264碼流結構圖 通過相關知識的查閱,概括出H.264的碼流結構圖[2]如圖1所示:
圖1 H.264的碼流結構
H264元素的分層結構
H.264編碼器輸出的Bit流中,每個Bit都隸屬于某個句法元素。句法元素被組織成有層次的結構,分別描述各個層次的信息。
在H.264 中,句法元素共被組織成 序列、圖像、片、宏塊、子宏塊五個層次。在這樣的結構中,每一層的頭部和它的數據部分形成管理與被管理的強依賴關系,頭部的句法元素是該層數據的核心,而一旦頭部丟失,數據部分的信息幾乎不可能再被正確解碼出來,尤其在序列層及圖像層。
在 H.264 中,分層結構最大的不同是取消了序列層和圖像層,并將原本屬于序列和圖像頭部的大部分句法元素游離出來形成序列和圖像兩級參數集,其余的部分則放入片層。
參數集是一個獨立的數據單位,不依賴于參數集外的其他句法元素。一個參數集不對應某一個特定的圖像或序列,同一序列參數集可以被多個圖像參數集引用,同理,同一個圖像參數集也可以被多個圖像引用。只在編碼器認為需要更新參數集的內容時,才會發出新的參數集。
復雜通信中的碼流中可能出現的數據單位:
IDR: 在H.264中,圖像以序列為單位進行組織。一個序列的第一個圖像叫做 IDR 圖像(立即刷新圖像),IDR 圖像都是 I 幀圖像。H.264 引入 IDR 圖像是為了解碼的重同步,當解碼器解碼到 IDR 圖像時,立即將參考幀隊列清空,將已解碼的數據全部輸出或拋棄,重新查找參數集,開始一個新的序列。這樣,如果前一個序列出現重大錯誤,在這里可以獲得重新同步的機會。IDR圖像之后的圖像永遠不會使用IDR之前的圖像的數據來解碼。 IDR 圖像一定是 I 圖像,但 I 圖像不一定是 IDR 圖像。I幀之后的圖像有可能會使用I幀之前的圖像做運動參考。
H264碼流結構 1. H264分層結構 H.263定義的碼流結構是分級結構,共四層。自上而下分別為:圖像層(picturelayer)、塊組層(GOB layer)、宏塊層(macroblock layer)和塊層(block layer)。而與H.263相比,H.264的碼流結構和H.263的有很大的區別,它采用的不再是嚴格的分級結構。 H.264的功能分為兩層,視頻編碼層(VCL)和網絡提取層(NAL)VCL數據即被壓縮編碼后的視頻數據序列。在VCL數據要封裝到NAL單元中之后,才可以用來傳輸或存儲。 NAL單元格式[2] 表1所示:
RBSP 類型之一 PS: 包括序列參數集 SPS 和 圖像參數集 PPS
SPS 包含的是針對一連續編碼視頻序列的參數,如標識符 seq_parameter_set_id、幀數及 POC 的約束、參考幀數目、解碼圖像尺寸和幀場編碼模式選擇標識等等。
PPS對應的是一個序列中某一幅圖像或者某幾幅圖像,其參數如標識符 pic_parameter_set_id、可選的 seq_parameter_set_id、熵編碼模式選擇標識、片組數目、初始量化參數和去方塊濾波系數調整標識等等。 NALU類型
標識NAL單元中的RBSP數據類型,其中,nal_unit_type為1, 2, 3, 4, 5及12的NAL單元稱為VCL的NAL單元,其他類型的NAL單元為非VCL的NAL單元。
0:未規定
1:非IDR圖像中不采用數據劃分的片段
2:非IDR圖像中A類數據劃分片段
3:非IDR圖像中B類數據劃分片段
4:非IDR圖像中C類數據劃分片段
5:IDR圖像的片段
6:補充增強信息 (SEI)
7:序列參數集
8:圖像參數集
9:分割符
10:序列結束符
11:流結束符
12:填充數據
13 – 23:保留
24 – 31:未規定 2. H.264碼流結構圖 通過相關知識的查閱,概括出H.264的碼流結構圖[2]如圖1所示: