RTMP协议详解(二)

转载 2012年03月21日 13:49:21

RTMP的字节序:
      RTMP的字节序和大多数网络协议一样是大端序,也有一些字段是小端序的,不过都有特殊的说明。
RTMP的head组成

         RTMP的head在协议中的表现形式是chunk head,前面已经说到一个Message + head可以分成一个和多个chunk,为了区分这些chunk,肯定是需要一个chunk head的,具体的实现就把Message  head的信息和chunk head的信息合并在一起以chunk head的形式表现。

        一个完整的chunk的组成如下图所示

                                                        
    

Chunk basic header:

该字段包含chunk的stream ID和 type 。chunk的Type决定了消息头的编码方式。该字段的长度完全依赖于stream ID,该字段是一个可变长的字段。

Chunk Msg Header:0, 3 ,7, 11

该字段包含了将要发送的消息的信息(或者是一部分,一个消息拆成多个chunk的情况下是一部分)该字段的长度由chunk basic header中的type决定。

Extend Timestamp: 0 ,4 bytes

该字段发送的时候必须是正常的时间戳设置成0xffffff时,当正常时间戳不为0xffffff时,该字段不发送。当时间戳比0xffffff小该字段不发送,当时间戳比0xffffff大时该字段必须发送,且正常时间戳设置成0xffffff。

        Chunk Data
        实际数据(Payload),可以是信令,也可以是媒体数据。

Chunk basic header:
   chunk basic head的长度为1~3个字节,具体长度主要是依赖chunk stream ID的长度,所谓chunk stream ID是flash server用来管理连接的客户端的信令交互的标识,在red5的文档中称之为channel ID,协议最大支持65597个streamID 从3~65599。ID 0,1,2为协议保留,0代表ID是64~319(第二个byte + 64);1代表chunk stream ID为64~65599((第三个byte)* 256 + 第二个byte + 64)(小端表示);2代表该消息为低层的协议(在RTMP协议中控制信令的chunk stream ID都是2)。3~63的chunk stream ID就是该byte的值。没有附加的字段来标识chunk stream streamID。在这里要指出的是虽然RTMP的chunk stream ID理论是可以达到65599,但是目前使用的chunk stream ID很少,2~7都是约定的,8是用来传输publish play等命令,其他的chunk stream ID目前好像没有使用,至少我不知道用来干嘛的。
      所以目前chunk basic head的长度一般为1个字节。这一个字节由两部分组成
                           +++++++++++++++++++
                           +fmt    +  cs id              +
                           +++++++++++++++++++
      fmt占两个bit用来标识紧跟其后的chunk Msg Header的长度,cs id占六个bit。
      两位的fmt取值为 0~3,分别代表的意义如下:
      case 0:chunk Msg Header长度为11;
      case 1:chunk Msg Header长度为7;
      case 2:chunk Msg Header长度为3;
      case 3:chunk Msg Header长度为0;
      所以 只有一个字节的chunk basic header取值为 chunk basic header = (fmt << 6) | (cs id).

RTMP协议分析及H.264打包原理

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。...
  • caoshangpa
  • caoshangpa
  • 2016年10月20日 14:20
  • 5540

RTMP协议中文翻译(首发)

翻译:阿宝  更新:2016-09-11  来源:彩色世界(https://blog.hz601.org/2016/07/03/real-time-messaging-protocol/index...
  • shishuo365
  • shishuo365
  • 2016年09月11日 20:29
  • 2504

RTMP协议从入门到放弃

RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)...
  • lipengshiwo
  • lipengshiwo
  • 2016年11月21日 22:55
  • 18723

RTMP协议(中文)详解以及规范

  • 2017年12月05日 09:46
  • 1006KB
  • 下载

RTMP协议详解

  • 2016年11月18日 11:07
  • 1.37MB
  • 下载

RTMP协议详解(转) ----- 这方面的资料太少了

资料太少了  ,,,转载 转自《RTMP协议详解(一) (二) (三) 》 Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Syste...
  • cainiaoxiaozhou
  • cainiaoxiaozhou
  • 2013年06月28日 13:01
  • 694

RTMP协议详解(转)

文章转自http://my.oschina.net/chen106106/blog/49392 Real Time Messaging Protocol(实时消息传送协议协议)是Adobe ...
  • zhaozefeng
  • zhaozefeng
  • 2012年08月27日 10:09
  • 277

RTMP协议详解(三)

Chunk Msg Header: Chunk Msg Header的长度是可变的,Chunk Msg Header可变的原因是为了压缩传输的字节数,把一些相同类型的chunk的head去掉一些字节...
  • stardtx
  • stardtx
  • 2012年03月21日 13:49
  • 552

RTMP协议详解

Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。 具体使用RTMP的...
  • a2657222
  • a2657222
  • 2012年09月17日 19:07
  • 505

RTMP、RTSP、HTTP视频协议详解(附:直播流地址、播放软件)

一、RTMP、RTSP、HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播...
  • sunxiaopengsun
  • sunxiaopengsun
  • 2017年03月17日 15:57
  • 4491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RTMP协议详解(二)
举报原因:
原因补充:

(最多只允许输入30个字)