RTP封裝H264詳解

2021-09-10 18:40:22 字數 1328 閱讀 1690

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[0] & 0x1f //得出nal型別

fu indicator = buff[0] & 0xe0 | 0x1c;  //0x1c數fu打包型別,28

fu header    =     ((i == 0) ? (0x80) : 0x00) | /*s*/

((i == (cnt - 1)) ? (0x40) : (0x00)) | /*e*/

nalu_type;

首包:0x7c  0x85

0       是f

11      是nri

11100   是fu type,這裡是28,即fu-a

1       是s,start,說明是分片的第一包

0       是e,end,如果是分片的最後一包,設定為1,這裡不是尾包

0       是r,remain,保留位,總是0

00101   是nal type,這裡是5,說明是關鍵幀

中間的n個包:

0x7c  0x05

0       是f

11      是nri

11100   是fu type,這裡是28,即fu-a

0       是s,start,說明是分片的第一包

0       是e,end,如果是分片的最後一包,設定為1,這裡不是尾包

0       是r,remain,保留位,總是0

00101   是nal type,這裡是5,說明是關鍵幀

尾包:0x7c  0x45

0       是f

11      是nri

11100   是fu type,這裡是28,即fu-a

0       是s,start,說明是分片的第一包

1       是e,end,如果是分片的最後一包,設定為1,這裡是尾包

0       是r,remain,保留位,總是0

00101   是nal type,這裡是5,說明是關鍵幀

sps的nal單元的首位元組為0x67,nal type 為 7。

fu indicator的前三位nal單元的首位元組的前三位,後五位為nal單元的型別,剛好與nal單元的首位元組是一致。所以單包時,rtp包頭後直接跟h264資料即可。

RTP中H264封裝NALU SPS,PPS等

h264使用rtp傳輸時,以sps和pps開頭,如下圖 h264幀由nalu頭和nalu載荷構成,以sps為例如下圖 5 idr影象中的片 6 補充增強資訊單元 sei 7 sps 8 pps 9 序列結束 10 序列結束 上圖中sps的nalu頭中的type值為7,表示sps sequence p...

對H264進行RTP封包原理

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

H264關於RTP協議的實現

tag h264 rtprfc3984 端和客戶端分別進行了功能模組設計。伺服器端 rtp封裝模組主要是對h 264碼流進行打包封裝 rtcp分析模組負責產牛和傳送rtcp包並分析接收到的rtcp包 qos反饋控制模組則根據rr報文反饋資訊動態的對傳送速率進行調整 傳送緩衝模組則設定埠傳送rtp r...