rtp载荷h264码流分析

rtp载荷h264码流分析

       H.264 的基本流由一系列NALU(Network Abstraction Layer Unit )组成,不同的NALU数据量各不相同。当数据流是储存在介质上时,在每个NALU 前添加起始码:0x000001,用来指示一个 NALU的起始和终止位置。在这样的机制下,在码流中检测起始码,作为一个NALU得起始标识,当检测到下一个起始码时,当前NALU结束。每个NALU单元由一个字节的 NALU头(NALU Header)和若干个字节的载荷数据(RBSP)组成。所以当数据量从存储介质中读出时才头四个自己是0x00 0x00 0x00 0x01,但在网络传输中,你就看不到0x00 0x00 0x00 0x01了。

RTP,RTCP数据和RTSP数据共享TCP数据通道,RTP和RTCP数据会以$符号+1个字节的通道编号+2字节长,共4个字节的前缀开始,流数据紧跟其后。RTSP数据是没有前缀数据的。RTP数据和RTCP数据的区别在于第二个字节的通道编号,据观察RTP通道编号是偶数,RTCP通道编号是奇数。(可参考RFC2326  10.12 Embedded (Interleaved) Binary Data

Interleaved Fream包结构如下:

rtp载荷h264码流分析_第1张图片

WireShark抓包具体分析如下:

rtp载荷h264码流分析_第2张图片

RTSP Interleaved Frame

0x24           (魔法数)
0x00           (通道0)
0x00 0x26      (RTSP Interleaved Frame包含的数据的的大小)
80 60 43 72 26 9f 23 94 89 34 23 ba          (RTP头)

67 64 00 1f ac 2c 6a 81 40 16 e9 b8 08 08

0a 00 00 03 00 02 00 00 03 00 65 08          (H264数据)

 

 

RTP 头分析,下面的文章写的很详细:

https://blog.csdn.net/chen495810242/article/details/39207305

 

H264数据分析

 

                             

(RFC3984   5.3.  NAL Unit Octet Usage)

(https://tools.ietf.org/html/rfc3984#section-5.1)

 

单个单元包:第一个字节的低5位决定Type。

Type = 0x67 & 0x1F

 

其他参考链接:

https://blog.csdn.net/qq_25005909/article/details/78622326

https://blog.csdn.net/rankun1/article/details/52681629

 

你可能感兴趣的:(onvif协议开发)