今天在網(wǎng)上找了一些資料,知道了如何檢測(cè)h264中的幀類型,在這里記錄下來。
首先,貼出nal單元類型定義(圖從《新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264》摘錄):
假設(shè)一段h264的碼流為:00 00 00 01 41 E6 60……
其中的00 00 00 01為起始碼,而起始碼之后的下一個(gè)字節(jié)就可以檢測(cè)出這一幀的類型。
在上面的碼流中起始碼之后的字節(jié)位 0x41,換算成二進(jìn)制為 0100 0001。
注:我解讀順序?yàn)?/span>從左往右算。
(1)第1位禁止位,值為1表示語(yǔ)法出錯(cuò)
(2)第2~3位為參考級(jí)別
(3)第4~8為是nal單元類型,在此處為 0 0001換算成十進(jìn)制為1。根據(jù)上圖可知道這段碼流是【不分區(qū)、非IDR圖像的片】,在baseline的檔次中就是P幀,因?yàn)閎aseline沒有B幀。
如果是另一段碼流:00 00 00 01 65 E8……
那么根據(jù)0x65字節(jié)(0110 0101)根據(jù)后5位換算十進(jìn)制為5,也就是【IDR圖像中的片】,即I幀。
用代碼的方式可以這樣寫,int type = 0x65 & 0x1f,然后根據(jù)type在表中查找即可獲得需要的結(jié)果。
聯(lián)系客服