转自: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
网友评论