RTMP 协议 Adobe 官
方规范
By, Defonds
Blog, http://blog.csdn.net/defonds
Email, defonds@163.com
译序
根据最新 Adobe 官方布的 RTMP 规范 rtmp_specification_1.0.pdf 行翻译,随时关
注官方文档更新http://www.adobe.com/cn/devnet/rtmp.html
1. 简介
Adobe 的实时消息传输协议 (RTMP) 通过一个靠地流传输供了一个向多通
道消息服,比如 TCP [RFC0793],意图在通信端之间传递有时间信息的视频音频和
数据消息流实通常对不类型的消息配不的优先级,当载能力有限时,会影响
等流传输的消息的次序
本文档将对实时流传输协议 (Real Time Messaging Protocol) 的语法和操作行述
2. 贡献者
Rajesh Mallipeddi,Adobe Systems 原员,起草了本文档原始规范,并供大部的
原始内容
Mohit Srivastava,Adobe Systems 员,促了本规范的开发
3. 词解释
Payload (有效载荷)包于一个数据包中的数据,例如音频采样或者压缩的视频数据
payload 的格式和解释,超出了本文档的范围
Packet (数据包)一个数据包由一个固定头和有效载荷数据构一些个层协议能
会要求对数据包定封装
Port (端口)"传输协议用开指定一机的不目的地的一个抽象TCP/IP 使
用小的整数对端口行标识" OSI 传输层使用的输选择器 (TSEL) 相当于端口
Transport address (传输地址)用识传输层端点的网地址和端口的组合,例如一个
IP 地址和一个 TCP 端口数据包由一个源传输地址传到一个目的传输地址
Message stream (消息流)通信中消息流通的一个逻辑通道
Message stream ID (消息流 ID)每个消息有一个关联的 ID,使用 ID 识出流通
中的消息流
Chunk (块)消息的一段消息在网发之前被拆很多小的部块确保端
到端交付所有消息有序 timestamp,即使有很多不的流
Chunk stream (块流)通信中允许块流向一个特定方向的逻辑通道块流从客户端
流向服器,也从服器流向客户端
Chunk stream ID (块流 ID)每个块有一个关联的 ID,使用 ID 识出流通中的块
流
Multiplexing (合)将独立的音频/视频数据合一个续的音频/视频流的工,
样时发几个视频和音频
DeMultiplexing (解)Multiplexing 的逆向处理,将交的音频和视频数据原原始
音频和视频数据的格式
Remote Procedure Call (RPC 程方法调用)允许客户端或服器调用对端的一个子程
序或者程序的求
Metadata (元数据)关于数据的一个述一个电影的 metadata 包括电影标题持续
时间创建时间等等
Application Instance (用实例)服器用的实例,客户端接个实例并发
接求
Action Message Format (AMF 动作消息格式协议)一个用于序列化 ActionScript 对象
图的紧凑的制格式AMF 有两个版本AMF 0 [AMF0] 和 AMF 3 [AMF3]
4. 节序对齐和时间格式
所有整数型属性网节序传输,节 0 表第一个节,零是一个单词或
段最常用的有效节序通常是大端排序关于传输序的更多细节述参考 IP 协议
[RFC0791]除非另外注明,本文档中的数值常量都是十制的 ( 10 基础)
除非另有规定,RTMP 中的所有数据都是节对准的例如,一个十的属性能
会在一个奇节偏移填充,填充节有零值
RTMP 中的 Timestamps 一个整数形式给出,表示一个未指明的时间点型地,每
个流会一个 0 的 timestamp 起始,但不是必的,要端能够就时间点达一
注意意味着任意不流 (尤是来自不机的) 的需要 RTMP 之外的机制
因 timestamp 的长度 32 ,每隔 49 17 小时 2 钟和 47.296 秒就要来
一次因允许流续传输,有能要多年,RTMP 用在处理 timestamp 时使用序
列码算法 [RFC1982],并且能够处理无限循例如,一个用假定所有相邻的 timestamp
都在 2^31 - 1 毫秒之内,因 10000 在 4000000000 之,而 3000000000 在 4000000000
之前
timestamp 也使用无符整数定,相对于前面的 timestamptimestamp 的长度能
会是 24 或者 32
5. RTMP 块流
本节介绍实时消息传输协议的块流 (RTMP 块流) 它层多媒体流协议供合并和
打包的服
当设 RTMP 块流使用实时消息传输协议时,它处理任何发消息流的协议每
个消息包 timestamp 和 payload 类型标识RTMP 块流和 RTMP 一起合各种音频-视
频用,从一对一和一对多直播到点播服,到互动会议用
当使用靠传输协议时,比如 TCP [RFC0793],RTMP 块流能够对于多流供所有消
息靠的 timestamp 有序端对端传输RTMP 块流并不供任何优先权或类似形式的控制,
但是被层协议用来供种优先级例如,一个直播视频服器能会基于发时间