一 nalu頭部解析
f:forbidden_zero_bit. 在 h.264 規範中規定了這一位必須為 0.
nri:
nal_ref_idc. 取00~11,似乎指示這個nalu的重要性,如00的nalu解碼器可以丟棄它而不影響影象的回放,0~3,取值越大,表示當前nal越重要,需要優先受到保護。如果當前nal是屬於參考幀的片,或是序列引數集,或是影象引數集這些重要的單位時,本句法元素必需大於0。
type:
標識nal單元中的rbsp資料型別,其中,nal_unit_type為1, 2, 3, 4, 5的nal單元稱為vcl的nal單元,其他型別的nal單元為非vcl的nal單元。
二 nalu type 解析nalu type的計算方式
在每一幀的起始碼(00 00 00 01)之後取到nalu頭部code 乙個位元組
用該公式計算nalutype :int type = code & 0x1fnalu type
nal_unit_type. 這個nalu單元的型別,1~12由h.264使用,24~31由h.264以外的應用使用,簡述如下:0 沒有定義
1-23 nal單元 單個 nal 單元包
1 不分割槽,非idr影象的片
2 片分割槽a
3 片分割槽b
4 片分割槽c
5 idr影象中的片
6 補充增強資訊單元(sei)
7 sps
8 pps
9 序列結束
10 序列結束
11 碼流結束
12 填充
13-23 保留
24 stap-a 單一時間的組合包
25 stap-b 單一時間的組合包
26 mtap16 多個時間的組合包
27 mtap24 多個時間的組合包
28 fu-a 分片的單元
29 fu-b 分片的單元
30-31 沒有定義
常見資料幀
序列引數集 sps----7:
影象引數集 pps----8:
關鍵幀 idr 幀----5:
i幀表示關鍵幀,你可以理解為這一幀畫面的完整保留;解碼時只需要本幀資料就可以完成(因為包含完整畫面)
p幀 ----1:
p幀表示的是這一幀跟之前的乙個關鍵幀(或p幀)的差別,解碼時需要用之前快取的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,p幀沒有完整畫面資料,只有與前一幀的畫面差別的資料)
三 參考**
h264nalu頭部解析可參考ffmpeg原始碼
h264_parser.c的parse_nal_units函式
h264 NALU的獲取與分析
0x00000001或0x000001是乙個nalu的起始標誌,遇到下乙個此標誌時為該nalu的結尾。起始標誌的後面第乙個位元組 type 裡包含有nalu的型別,type 0x1f即為該nalu的型別 nal unit type 具體型別分析詳見下節。nal unit type 7時,nalu為s...
H264 NALU 使用PS封裝 RTP傳送
最近由於專案平台需求,要將h264 nalu封裝為ps再用rtp傳送,ps封裝按照iso dec 13818 1標準。乙個ps包包含ps header,pes header,ps system header,ps system map等。針對h264做如下ps封裝 1 每個idr nalu前一般都會...
H264系列(4) h264協議幀頭資料解析
對原作者表示感謝!h264常見的幀頭資料為 00 00 00 01 67 sps 00 00 00 01 68 pps 00 00 00 01 65 idr 幀 00 00 00 01 61 p幀 等等,那麼他們代表的意思是什麼呢?start code有兩種,四個位元組的 00 00 00 01 和...