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 消息分块:

---------------------
作者:顺555
来源:CSDN
原文:https://blog.csdn.net/weixin_39371129/article/details/74576960
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. ubuntu下安装mysql
  2. 伪装MAC地址
  3. 【转】RBAC权限管理
  4. Lua面向对象编程
  5. Java常用jar包用途
  6. python之chardet库
  7. PHP 语言需要避免的 10 大误区
  8. JSON对象(自定义对象)
  9. idea sass scss配置
  10. hdu 2191 (多重背包+二进制优化)
  11. Java中双向链表的代码实现
  12. EF Core新增迁移时无法加载程序集“System.ValueTuple”的错误
  13. 雷林鹏分享:CodeIgniter 数据库操作
  14. 【MM系列】SAP基本计量单位更改
  15. Sliverlight常见错误集锦
  16. python基础知识~备份还原功能设计
  17. Java中 break continue return 的区别
  18. Java平台编写运行Ruby和Python
  19. Linux sudo用法与配置
  20. php中对象(object)与数组(array)之间的相互转换

热门文章

  1. NeurIPS 2018 中的贝叶斯研究
  2. django 浅谈索引(转)
  3. 解决使用绝对定位absolute后,margin:0 auto居中方法失效(转)
  4. MySQL AND 和 OR 联合使用带来的坑
  5. R|批量循环处理同一格式文件-csv,txt,excel
  6. [Vue]Vue keep-alive
  7. HTTP协议探究(五):H2中一些重要的概念
  8. C#获取Excel表格所有sheet名(Epplus)
  9. Java Web 深入分析(7) Jetty原理解析
  10. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 动态数据的呈现