RTMP协议详解

RTMP协议详解

ID:42770243

大小:48.00 KB

页数:8页

时间:2019-09-20

RTMP协议详解_第1页
RTMP协议详解_第2页
RTMP协议详解_第3页
RTMP协议详解_第4页
RTMP协议详解_第5页
资源描述:

《RTMP协议详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、RealTimeMessagingProtocol(实时消息传送协议协议)是AdobeSystems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。具体使用RTMP的AS代码大概如下:  varvideoInstance:Video=your_video_instance;  varnc:NetConnection=newNetConnection();  varconnected:Boolean=nc.connect("rtmp://localhost/myapp");  varns:NetS

2、tream=newNetStream(nc);  videoInstance.attachVideo(ns);ns.play("flvName");Adobe也在官方网站已经提供了RTMP协议的官方文档说明,为什么要写这个系列文章最大的原因只是对前一段工作的一个总结和回顾,最近两个月,实现了一个RTMPServer的c++版本,把公司的流媒体服务和flash无缝对接起来。希望我的文字能给后来研究这个协议的同学有一定的帮助。RTMP协议是一个基于TCP的高层协议族,当然这个玩意据说还有UDP协议版本的,不过现在还没有出

3、来,好像Adobe下一版本的FMS会提供支持。下文将要描述的是TCP协议版本的协议。  RTMP协议的概要理解:RTMP协议是为了和flash之间交换信令以及媒体数据。为了提高使用效率信令和媒体数据都是使用相同的机制。因为是相同的机制Adobe就整出来了一些比较搞人的概念,当然每个协议第一次接触都是比较难理解的。       在RTMP协议中信令和媒体数据都称之为Message,在网络中传输这些Message,为了区分它们肯定是要加一个Message head的,所以RTMP协议也有一个Messagehead,还有一

4、个问题因为RTMP协议是基于TCP的,由于TCP的包长度是有限制的(一般来说不超过1500个字节),而RTMP的Message长度是有可能很大的,像一个视频帧的包可能会有几十甚至几千K,这个问题就必然有一个分片的问题,在RTMP协议中对应的说法就是chunk,每一个Message+head都是由一个和多个chunk组成的。到这里对RTMP协议的概要理解就算完了。RTMP的字节序:      RTMP的字节序和大多数网络协议一样是大端序,也有一些字段是小端序的,不过都有特殊的说明。RTMP的head组成        

5、RTMP的head在协议中的表现形式是chunkhead,前面已经说到一个Message+head可以分成一个和多个chunk,为了区分这些chunk,肯定是需要一个chunkhead的,具体的实现就把Message head的信息和chunkhead的信息合并在一起以chunkhead的形式表现。       一个完整的chunk的组成如下图所示                                                            Chunkbasicheader:该字段包含chun

6、k的streamID和type。chunk的Type决定了消息头的编码方式。该字段的长度完全依赖于streamID,该字段是一个可变长的字段。ChunkMsgHeader:0,3,7,11该字段包含了将要发送的消息的信息(或者是一部分,一个消息拆成多个chunk的情况下是一部分)该字段的长度由chunkbasicheader中的type决定。ExtendTimestamp:0,4bytes该字段发送的时候必须是正常的时间戳设置成0xffffff时,当正常时间戳不为0xffffff时,该字段不发送。当时间戳比0xfff

7、fff小该字段不发送,当时间戳比0xffffff大时该字段必须发送,且正常时间戳设置成0xffffff。       ChunkData       实际数据(Payload),可以是信令,也可以是媒体数据。Chunkbasicheader:  chunkbasichead的长度为1~3个字节,具体长度主要是依赖chunkstreamID的长度,所谓chunkstreamID是flashserver用来管理连接的客户端的信令交互的标识,在red5的文档中称之为channelID,协议最大支持65597个streamI

8、D从3~65599。ID0,1,2为协议保留,0代表ID是64~319(第二个byte+64);1代表chunkstreamID为64~65599((第三个byte)*256+第二个byte+64)(小端表示);2代表该消息为低层的协议(在RTMP协议中控制信令的chunkstreamID都是2)。3~63的chunkstreamID就是该by

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。