前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分成chunk的形式发送的。其实一帧媒体数据在拆分成chunk之前还需要进行必要的头部信息封装,本文介绍rtmp协议中H.264/H.265视频数据的头部信息封装。
H.264 rtmp头部信息封装
SPS PPS
AVCDecoderConfigurationRecord
- frame type (1 byte)
- fixed 0x00 0x00 0x00 0x00 (4 byte)
- configurationVersion (1 byte)
- AVCProfileIndication (1 byte)
- profile_compatibility (1 byte)
- AVCLevelIndication (1 byte)
- lengthSizeMinusOne (1 byte)
SPS
- sps number (1 byte)
- sps data length (2 byte)
- sps data
PPS
- pps number (1 byte)
- pps data length (2 byte)
- pps data
1) frame type
高4位表示是否是关键帧,低4位表示编码类型。SPS和PPS是关键帧用1表示,H.264(AVC)对应的值是7,所以这个byte是0x17。
2) fixed
这4个byte的具体含义我也不清楚,但对于H.264 AVCDecoderConfigurationRecord来说是 0x00 0x00 0x00 0x00
3) configurationVersion