H264(NAL簡介與I幀判斷)
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
1、NAL全稱Network Abstract Layer, 即網絡抽象層。
在H.264/AVC視頻編碼標準中,整個系統框架被分為了兩個層面:視頻編碼層面(VCL)和網絡抽象層面(NAL)。其中,前者負責有效表示視頻數據的內容,而后者則負責格式化數據并提供頭信息,以保證數據適合各種信道和存儲介質上的傳輸。因此我們平時的每幀數據就是一個NAL單元(SPS與PPS除外)。在實際的H264數據幀中,往往幀前面帶有00 00 00 01 或 00 00 01分隔符,一般來說編碼器編出的首幀數據為PPS與SPS,接著為I幀……
如下圖:
2、如何判斷幀類型(是圖像參考幀還是I、P幀等)?
NALU類型是我們判斷幀類型的利器,從官方文檔中得出如下圖:
我們還是接著看最上面圖的碼流對應的數據來層層分析,以00 00 00 01分割之后的下一個字節就是NALU類型,將其轉為二進制數據后,解讀順序為從左往右算,如下:
(1)第1位禁止位,值為1表示語法出錯
(2)第2~3位為參考級別
(3)第4~8為是nal單元類型
例如上面00000001后有67,68以及65
其中0x67的二進制碼為:
0110 0111
4-8為00111,轉為十進制7,參考第二幅圖:7對應序列參數集SPS
其中0x68的二進制碼為:
0110 1000
4-8為01000,轉為十進制8,參考第二幅圖:8對應圖像參數集PPS
其中0x65的二進制碼為:
0110 0101
4-8為00101,轉為十進制5,參考第二幅圖:5對應IDR圖像中的片(I幀)
所以判斷是否為I幀的算法為: (NALU類型 & 0001 1111) = 5 即 NALU類型 & 31 = 5
比如0x65 & 31 = 5
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成