2021-06-28-RTMP协议详细学习

一、摘要(Abstract)

本备忘录描述了Adobe的实时消息协议( Real Time Messaging Protocol)(RTMP),这是一种应用程序级协议,旨在通过适当的传输协议(如TCP)对多媒体传输流(如音频、视频和交互式内容[interactive content])进行多路复用和打包(multiplexing and packetizing)。

二、导论(Introduction)

??

三、术语(Terminology)

关键词“必须”、“不得”、“必须”、“应”、“不得”,“应该”、“不应该”、“推荐”、“不推荐”、“可以”和本备忘录中的“可选”应解释为[RFC2119]。

四、定义(Definitions)

???
(1)有效载荷:数据包中包含的数据,例如音频样本或压缩视频数据。有效载荷格式和解释超出了本文件的范围。
(2)数据包:数据包由固定报头和有效负载数据组成。一些底层协议可能需要定义数据包的封装。

五、字节顺序、对齐方式和时间格式(Byte Order, Alignment, and Time Format)

???
1)所有整数字段均按网络字节顺序进行,字节0是显示的第一个字节,位0是字或字段中的最高有效位。这种字节顺序通常称为big-endian。互联网协议[RFC0791]中详细描述了传输顺序。除非另有说明,本文件中的数值常量为十进制(以10为基数)。
2)除非另有规定,RTMP中的所有数据都是字节对齐的;例如,16位字段可能处于奇数字节偏移。在指示填充的位置,填充字节的值应为零。
3)RTMP中的时间戳是相对于未指定历元的整数毫秒数。通常,每个流将以0的时间戳开始,但这不是必需的,只要两个端点在历元上一致。请注意,这意味着跨多个流(特别是来自不同主机的流)的任何同步都需要RTMP之外的其他机制。
4)因为时间戳是32位长,所以它们每49天17小时2分钟47.296秒滚动一次。由于允许流连续运行,可能会连续运行数年,因此RTMP应用程序在处理时间戳时应该使用序列号算法[RFC1982],并且应该能够处理环绕。例如,应用程序假定所有相邻的时间戳彼此之间的间隔在2^31-1毫秒之内,因此10000在4000000000之后,30000000000在4000000000之前。
5)时间戳增量也指定为相对于上一个时间戳的无符号整数毫秒数。时间戳增量可以是24位或32位长。

六、消息交换示例(Message Exchange Examples)

???
下面是几个例子来解释使用RTMP进行消息交换。
(1)发布录制的视频【Publish Recorded Video】
此示例说明了发布者如何发布流,然后将视频流传输到服务器。其他客户端可以订阅此已发布流并播放视频。在这里插入图片描述

名词解释
Publisher Client发布(至服务器的)客户端
Server服务器
Handshaking Done**【阶段1】**握手完毕
Connect**【阶段2】**连接
Command Message(connect)命令消息(连接)
Window Acknowledge Size窗口确认大小
Set Peer BandWidth设置对等带宽
Window Acknowledge Size窗口确认大小
User Control(StreamBegin)用户控制(StreamBegin)
Command Message _result- connect response命令消息 _结果-连接响应
CreateStream**【阶段3】**CreateStream
Command Message(createStream)命令消息(createStream)
Command Message (_result- createStream response)命令消息 (_结果-createStream响应)
Publishing Content**【阶段4】**发布内容
Command Message(publish)命令消息(发布)
User Control(StreamBegin)用户控制(StreamBegin)
Data Message (Metadata)数据消息(元数据)
Audio Data音频数据
SetChunkSize设置块大小
Command Message (_result- publish result)命令消息 (_结果-发布结果)
Video Data视频数据
Until the stream is complete直到流完成
Message flow in publishing a video stream发布视频流中的消息流

(2)广播共享对象消息【Broadcast a Shared Object Message】
此示例演示了在创建和更改共享对象期间交换的消息。它还说明了共享对象消息广播的过程。
在这里插入图片描述
(3)Publish Metadata from Recorded Stream【Publish Metadata from Recorded Stream】
此示例描述了发布元数据的消息交换。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值