简单分析RTMP规范

原创 2016年06月01日 09:44:09

参考了网上很多文章,
完整的协议规范包含的内容较多,可以在网上搜索相应的文章。

下面是简单的分析,对于基本的结构有一个基本的了解。

1.RTMP在TCP/IP 体系结构中,属于应用层协议。
RTMP 协议有多个变种:
        1. 工作在 TCP 协议之上,并使用默认端口号 1935 的明文协议。
        2. RTMPS 使用 TLS/SSL 连接的 RTMP 协议。
        3. RTMPE 使用 Adobe 自己的安全机制的加密 RTMP。虽然它的实现细节是私有的,但使用的是行业标准加密原语。RTMPE 的设计是有缺陷的,它本身并不提供实际的安全。
        4. RTMPT 封装在 HTTP 请求内部以穿越防火墙的协议。RTMPT 常用于建立 TCP 端口 80 和 443 的请求以绕开很多公司的流量过滤。封装的会话中可能会携带纯 RTMP、RTMPS 或者 RTMPE 包。

RTMP协议中的数据单元称为消息(Message)。使用RTMP协议传输数据的时候,消息被拆成消息块(Chunk)

2.消息

RTMP消息分成两个部分,头和它的负载。

  2.1 消息头

消息头包含以下内容:
MessageType(消息类型)
Payload Length(负载长度)
Timestamp(时间戳)

Message Stream Id(消息流ID):


其中消息类型用一个字节的字段来表示。ID1-7 用于协议控制
Message Type ID 8-9分别表示音频和视频
MessageType ID 15-20用于AMF编码命令的发送,负责用户和服务器之间的交互,如播放,暂停等。

3 消息块
在传输数据的时候,消息被拆分成较小的数据块,即消息块。消息块由消息块首部(Chunk Header) 和 消息块数据组成。
消息块首部由三部分组成;
Basic header
Chunk Message Header 
Extended TimeStamp(这个只有当时间戳溢出时才会出现)
4.消息分块
消息分块只是 把Msg 的Data部分分成消息块。

块大小是可配置的。这个可以在7.1节中描述的块消息中完成。最大块是65535字节,最小块是128字节。块越大CPU使用率越低,但是也导致大的写入,在低带宽下产生其他内容的延迟。块大小对每个方向都保持独立。




疑问:
消息被分成消息块的时候,只是把Msg Body分成了块,
消息头没有处理,
这个消息头如何传递?

版权声明:本文为博主原创文章,未经博主允许不得转载。

[实战]利用RTMP实现直播系统

一,目标: 利用开源或者免费工具实现一个直播系统;同时支持在浏览器、播放器和嵌入到PC应用或者移动APP中观看直播。...
  • kenny25
  • kenny25
  • 2014年09月17日 18:41
  • 7931

wireshark中rtmp协议用80端口时显示成tcp

大家知道,80端口默认是http协议,所以wireshark会讲80端口上的默认数据解析成http协议。但是有时候我们也会把其他协议端口也指定成80端口,比如rtmp协议,这个时候用wireshark...
  • zhangqi_gsts
  • zhangqi_gsts
  • 2016年10月09日 19:57
  • 1030

实时消息传输协议 RTMP(Real Time Messaging Protocol)

实时消息传输协议(RTMP)最初是由 Macromedia 为互联网上 Flash player 和服务器之间传输音频、视频以及数据流而开发的一个私有协议。Adobe 收购 Macromedia 购以...
  • defonds
  • defonds
  • 2013年12月18日 21:59
  • 16291

rtmp协议规范

译序:         本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范。本文包含 RTMP 规范的全部内容。是第一个比较全面的 RTMP 规范的中译本。由于成文时间仓促,加上作...
  • ly402609921
  • ly402609921
  • 2016年10月09日 17:50
  • 1935

rtmp协议官方规范

1. 简介         Adobe 公司的实时消息传输协议 (RTMP) 通过一个可靠地流传输提供了一个双向多通道消息服务,比如 TCP [RFC0793],意图在通信端之间传递带有时间信息的视...
  • wtf347066703
  • wtf347066703
  • 2016年10月11日 16:36
  • 934

rtmp直播协议介绍

1.概述 rtmp协议是adobe公司发明的直播流协议,是目前主流的视频上传协议。 2.术语 AMF(Action Message Format)是在flash和flex中与远程服务端交...
  • yhc223
  • yhc223
  • 2015年02月12日 10:21
  • 1206

设置RTSP, RTP和RTCP端口号

1.设置RTSP端口号 设置RTSP端口号的处理位于ARTSPConnection.cpp文件中,首先从url中获取端口号,如果读取不到,则设置为默认端口554。代码处理如下: ARTSPCo...
  • ameyume
  • ameyume
  • 2012年03月13日 09:42
  • 19839

使用安全令牌保护 RTMP 流

本文就如何使用安全令牌对 Wowza 媒体服务器的直播流或者点播流进行保护的过程进行探讨,就服务器端和客户端配置分别进行了详细描述。...
  • defonds
  • defonds
  • 2014年01月21日 20:14
  • 8084

SRS 代码分析【RTMP握手实现】

RTMP简单握手实现 1.客户端握手的代码如下: int SrsSimpleHandshake::handshake_with_server(SrsHandshakeBytes* hs_bytes,...
  • weixin_39799839
  • weixin_39799839
  • 2017年12月11日 10:28
  • 128

揭开RTMP播放流程的神秘面纱

RTMP 是目前各种网络直播应用最核心的传输协议,也是互动直播采用最广泛的协议。如果说流媒体服务器(Server)是网络直播的骨骼,RTMP则是网络直播的血液,可以说,没有RTMP,就没有今天如此火爆...
  • charleslei
  • charleslei
  • 2016年07月23日 10:14
  • 4567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单分析RTMP规范
举报原因:
原因补充:

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