C++ rtmp livestream 流媒体

海阔天空 张翼飞翔

我的学习笔记。--我喜欢这里,因为这里安静,无广告骚扰。
随笔 - 82, 文章 - 2, 评论 - 126, 引用 - 0
数据加载中……

关于rtmp中数据类型为0x16的封包

关于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)

posted on 2009-02-06 14:01 ZhangEF 阅读(4773) 评论(6)  编辑  收藏 所属分类: rtmp

评论

# re: 关于rtmp中数据类型为0x16的封包  回复  更多评论   

大哥,不错,我的程序就是没有处理0x16类型的包,看了你的帖子明白了
2009-02-12 10:21 | tery

# re: 关于rtmp中数据类型为0x16的封包  回复  更多评论   

呵呵,以后adobe的rtmp协议公开了,就不用我们这样分析封包了
2009-02-12 17:43 | ZhangEF

# re: 关于rtmp中数据类型为0x16的封包  回复  更多评论   

但公开之后大家都去做,我们老板就没优势了哦
2009-02-16 14:04 | tery

# re: 关于rtmp中数据类型为0x16的封包[未登录]  回复  更多评论   

其实我adobe公开协议后,实现RTMP协议并没有变简单。

RTMP协议我读了后,在写的时候,帮助没有想的那么大。还是读red5比较方便。

RTMP协议,被我们公司里的人痛批写的一塌糊涂,还有那个AMF的格式。
2009-11-15 10:14 | 白开水

# re: 关于rtmp中数据类型为0x16的封包  回复  更多评论   

adobe公开的rtmp协议里面没有对媒体封装格式说明, 以后Adobe可能会进一步公开如何将H264 AAC VP6等格式媒体封装成flash识别的流
2010-02-02 18:32 | ZhangEF

# re: 关于rtmp中数据类型为0x16的封包  回复  更多评论   

唉啊,又搜到这个页面上来了,去年我研究下载时已经搜到这里来了,并且下载h264类型点播成功了。今年做server部分自己发送的h264视频流能被下载确不能播放,又搜到这里来了。
看来“以后Adobe可能会进一步公开如何将H264 AAC VP6等格式媒体封装成flash识别的流 ”是等不到了 ,还是去研究一下其它开源项目吧。
2010-04-07 09:37 | tery