WireShark 抓到的 Rtmp video 包介绍

转自:https://my.oschina.net/u/2326611/blog/854463
https://blog.csdn.net/zero_sama/article/details/69802783

第一个 rtmp body: avc sequence header

首先看看包 video data


image.png

Message Type id: 0x09 表示视频

rtmp body 每个字节表示的含义

字节 1:高四位表示 key frame,1表示关键帧,2表示中间帧,低四位表示视频类型如7表示H264编码格式;上图中的17就表示H264编码格式的关键帧

字节 2:AVC packet type : 1字节
0x00: AVC Sequence Header
0x01: AVC NALU

字节 3,4,5:0 表示 composition time 3字节, AVC时无意义,全为0

当AVC packet type为AVC Sequence Header时,接下来就是AVCDecoderConfigurationRecord的内容:

字节 6:1 表示 version

字节 7:0x64 表示 profile

字节 8:0 表示 profile compat

字节 9:0x1f 表示 level

字节 10:0xff,6 bits reserved (111111) + 2 bits nal size length - 1 (11)

字节 11:0xe1,3 bits reserved (111) + 5 bits number of sps (00001)

字节 12,13:0x1e,nal size

字节 14:0x67,nal type,其中 7 表示 sps

字节 44:1 表示 number of pps。其中字节 44 为 0x1e+nal type 的地址

字节 45,46:5 表示 pps size

第二个 rtmp body: AVC NALU

首先看看包 video data


image.png

当AVC packet type为AVC NALU(0x01)时:
audio / video 信息:1字节
AVC packet type:AVC NALU
后跟1个或多个NALU
composition time:3字节,AVC时无意义,全为0
NALU length:(lengthSizeMinusOne & 3) + 1字节 NALU长度
NALU Data:
NALU length:
NALU Data:

上面截图中的body size 为 870,包括两个 NAL。

另外封装的时候去掉了 H264 的 start code prefix 00 00 01,或者 00 00 00 01,该 body 包括两个 NAL,第一个 nal 的大小为 0x02af,nal type 值为 6 表示 SEI,第二个 nal 的大小为 0xaa,nal type 值为 5, 表示 IDR

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容