RTP中H264封裝NALU SPS,PPS等

2021-10-25 09:36:01 字數 1497 閱讀 2028

h264使用rtp傳輸時,以sps和pps開頭,如下圖:

h264幀由nalu頭和nalu載荷構成,以sps為例如下圖:

5     idr影象中的片

6     補充增強資訊單元(sei)

7     sps

8     pps

9     序列結束

10    序列結束

上圖中sps的nalu頭中的type值為7,表示sps(sequence parameter set),sps還包含一些影象編碼的一些重要配置資訊,比如profile_id,level_id,影象的寬高資訊等,具體如下圖:

如果一幀資料過大,將被分為多個片,即有多個slice組成,如下圖:

h.264編碼時,在每個nal前新增起始碼 0x000001,解碼器在碼流中檢測到起始碼,當前nal結束。為了防止nal內部出現0x000001的資料,h.264又提出'防止競爭 emulation prevention"機制,在編碼完乙個nal時,如果檢測出有連續兩個0x00位元組,就在後面插入乙個0x03。當解碼器在nal內部檢測到0x000003的資料,就把0x03拋棄,恢復原始資料。

0x000000  ----------->  0x00000300

0x000001  ----------->  0x00000301

0x000002  ----------->  0x00000302

0x000003  ----------->  0x00000303

總的來說,h264的碼流的打包方式有兩種,一種為annex-b byte stream format 的格式,這個是絕大部分編碼器的預設輸出格式,就是每個幀的開頭的3~4個位元組是h264的start_code,0x00000001或者0x000001;另一種是原始的nal打包格式,就是開始的若干位元組(1,2,4位元組)是nal的長度,而不是start_code,此時必須借助某個全域性的資料來獲得編 碼器的profile,level,pps,sps等資訊才可以解碼。

RTP封裝H264詳解

nalu buff nal資料buff len nal資料長度 cnt 包數 max fu size 每包長度,一般1400 nalu type nal型別 cnt len max fu size 0 len max fu size len max fu size 1 nalu type buff ...

linphone中h264的 RTP打包 二

html view plain copy 今天發現乙個奇怪的問題,用上位機的linphone客戶端撥打下位機的sip客戶端能夠正常工作,但是反過來就出問題了。抓包發現linphone傳送了大量的ip fragmentation 資料報,google才知道,當發現的資料大於mtu時就發產生ip分片的資...

對H264進行RTP封包原理

1.引言 2.rtp 協議關鍵引數的設定 其中比較關鍵的引數設定解釋如下 1 標示位 m 1 位,該標示位的含義一般由具體的 應用框架 profile 定義,目的在於標記處rtp 流中的重要事件。3 序號 16 位,每傳送乙個 rtp 資料報,序號加 1。接受者可以用它來檢測分組丟失和恢復分組順序。...