前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频互联网直播/点播流媒体服务器RTMP协议分析及推流过程

视频互联网直播/点播流媒体服务器RTMP协议分析及推流过程

作者头像
EasyNVR
发布2020-05-19 12:47:31
4840
发布2020-05-19 12:47:31
举报
文章被收录于专栏:EasyNVREasyNVR

RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。我们视频直播点播流媒体服务器支持RTMP协议流的输出。

我们来看一下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. 服务器发送客户端要播放的音频和视频数据
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档