使用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)
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)