RTMP协议分析及推流过程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RTMP协议分析及推流过程
1.RTMP(实时消息传输协议)是Adobe 公司开发的⼀个基于TCP的应⽤层协议。

2.RTMP协议中基本的数据单元称为消息(Message)。

3.当RTMP协议在互联⽹中传输数据的时候,消息会被拆分成更⼩的单元,称为消息块(Chunk)。

RTMP 握⼿(Handshake):
1.握⼿开始于客户端发送C0、C1块。

服务器收到C0或C1后发送S0和S1。

2.当客户端收齐S0和S1后,开始发送C2。

当服务器收齐C0和C1后,开始发送S2。

3.当客户端和服务器分别收到S2和C2后,握⼿完成。

在实际⼯程应⽤中,⼀般是客户端先将C0, C1块同时发出,服务器在收到C1 之后同时将S0, S1, S2发给客户端。

之后客户端向服务器端发送C2块,简单握⼿完成。

建⽴⽹络连接(NetConnection):
1. 客户端发送命令消息中的“连接”(connect)到服务器,请求与⼀个服务应⽤实例建⽴连接。

2. 服务器接收到连接命令消息后,发送确认窗⼝⼤⼩(Window Acknowledgement Size)协议消息到客户端,同时连接到连接命令中提到的应⽤程序。

3. 服务器发送设置带宽协议消息到客户端。

4. 客户端处理设置带宽协议消息后,发送确认窗⼝⼤⼩(Window Acknowledgement Size)
协议消息到服务器端。

5. 服务端向客户端发送“流开始”(Stream Begin)。

6. 服务器发送命令消息中的“结果”(_result),通知客户端连接的状态。

建⽴⽹络流(Create Stream):
1. 客户端发送命令消息中的“创建流”(CreateStream)命令到服务器端。

2. 服务器端接收到“创建流”命令后,发送命令消息中的“结果”(_result),通知客户端流的状态。

播放(Play):
1. 客户端发送命令“播放”给服务器
2. 接收到播放命令后,服务器发送设置块⼤⼩(ChunkSize)协议消息给客户端
3. 服务器发送“stream begin”给客户端,告诉客户端流的id
4. 播放命令成功的话,服务器发送命令消息中的“响应状态” NetStream.Play.Start & NetStream.Play.Reset,告知客户端“播放”命令执⾏成功
5. 服务器发送客户端要播放的⾳频和视频数据
⼩结:
关系图:
播放⼀个RTMP协议的流媒体需要经过以下⼏个步骤:
下⾯⽤wireshark 抓包来分析⼀下过程:
RTMP 消息结构:
RTMP消息块:
在⽹络上传输数据时,消息需要被拆分成较⼩的数据块,才适合在相应的⽹络环境上传输。

RTMP协议中规定,消息在⽹络上传输时被拆分成消息块(Chunk)。

RTMP 消息分块:。

相关文档
最新文档