关于rtmp封包中数据类型为0x16的封包
使用rtmp协议从FMS3中拉音视频数据的时候,会收到AMFType=0x16的封包,这种包在FMS2中从没有出现过.
rtmp包头的第8个字节就是AMFType,也就是数据类型。例如AMFType=0x08表示音频包,AMFType=0x04表示Ping包等等。FMS3中为了实现H.264数据的直播而增加了一个数据类型,这个类型的值为0x16。AMFType=0x16的包中既包含了音频帧也包含了视频帧。其中音频帧和视频帧是一种新的格式存放的,类似FLV文件存储格式,每个音视频包作为一个Tag,许多的Tag组成了这个AMFType=0x16的数据类型,Tag的格式如下:
用途 | 大小(Byte) | 数据含义 |
StreamType | 1 | 流的种类(0x08=音频,0x09=视频) |
MediaSize | 3 | 媒体数据区域大小 |
TiMMER | 3 | 绝对时间戳,单位毫秒 |
Reserve | 4 | 保留,值为0 |
MediaData | MediaSize | 媒体数据,音频或视频 |
TagLen | 4 | 帧的大小,值为媒体数据区域大小+参数长度(MediaSize+1+3+3+4) |