RTMP协议

目录简介概念rtmp协议握手过程rtmp通信过程简介RTMP协议是RealTimeMessageProtocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。     RTMP消息块流和RTMP一起适用于多样性音视频应用程序,从…

大家好,又见面了,我是你们的朋友全栈君。

目录

简介

概念

rtmp协议握手过程

rtmp通信过程


简介

RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。          

RTMP消息块流和RTMP一起适用于多样性音视频应用程序,从一对一和一对 多向视频点播服务器直接广播到交互式会议应用程序。          

RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接。

 

概念

有效负载:

          包含在每一个包中的数据,就像音视频样本或压缩后的视频数据。

包:

        一个数据包是由固定的包头和有效的负载数据来组成的。

端口:

      rtmp协议默认使用的是1935端口。

消息流:

      一个通信的逻辑通道,让消息流通

消息流id:

     每个消息拥有一个分配的id,标识消息流。

消息块:

    消息的一个片段,一个完整的消息会被分割成小的片段,每个片段都是一个消息块。

消息块流:

    一个通信的逻辑通道,允许消息块在一个特定方向流通,例如:从客户端到服务器。

消息块流id:

     每个消息块有一个分配的id用于识别跟随消息块流。

复合技术:

      把分开的音视频数据组合成一条音视频流的过程。

逆复合技术:

     复合的反向过程,交叉存取组装的音视频数据,是他们成为最初的音视频数据。

时间戳:

     在rtmp消息块中的时间戳使用整数来表示,但是为毫秒。时间戳必须是线性增加的,允许引用程序处理异步传输,带宽度量,检测,流控制。

 

rtmp协议握手过程

       要建立一个有效的rtmp连接,首先经过”握手”阶段,规则如下:

   RTMP协议

   客户端被指定依次向服务器发送C0,C1,C2三个chunk,服务器向客户端发送S0,S1,S2三个chunk。 详细发送要求:

  • 客户端开始发送C0,C1;
  • 客户端必须收到S1后,才发送C2;
  • 客户端必须收到S2后才开始发送其他信息(控制信息和音视频数据) 服务器要等收到C0才能发送S0和S1;
  • 服务器必须等C1后才能发送S2 服务器必须等收到C2之后才能发送其他数据(控制信息和音视频数据)

 

rtmp通信过程

简化如下:     

  • client–> server   : 发送一个创建流的请求  (C0、C1)。     
  • server–> client   : 返回一个流的索引号 (S0、S1、S2)。   
  •  client–> server   : 开始发送 (C2)    
  •  client–> server   : 发送音视频数据(这些包用流的索引号来唯一标识)

 

握手第一阶段:     

        C0和S0都是rtmp版本包,大小1字节                                                                  RTMP协议

        版本:8比特,C0:客户端需求的rtmp版本,S0:服务器选择的rtmp版本,如图:

RTMP协议

RTMP协议

握手第二阶段:

      客户端发送C1包,C1包大小1536字节,格式如下图:

     RTMP协议

      time:包含了一个时间戳,为了同步多个消息块流,     发送端会期望这个值是其他消息块的块流时间。 

C1:RTMP协议S2:RTMP协议 C2:RTMP协议

      服务器应答,发送S1包,S1数据和C1完全相同。

 

握手第三阶段:  

          客户端发送C2包:C2包,包大小1536字节,包格式如图:     

            RTMP协议

         时间:4byte,这个字段必须对应发送的时间戳(C2:S1, S2:C1);     时间2:4byte,这个包含先前的每一个包被读的时间戳,     以及1528字节。

 

握手完成

       消息分块:握手完成,复合多个消息分块,每个消息块有一个唯一分配的消息块流id,消息块流在网络上传输。 一个消息块发送完,才能发送下一个消息块。服务器接收完,基于消息块流id,复合成消息。

 

拆分的意义

     消息块格式:   

            消息块的默认大小128字节。通过set Chunk size 设置块的最大值。     格式如图:

         RTMP协议

 

参考:https://www.yuque.com/docs/share/6d5357b8-33a9-42e2-9b9d-6bf72805716a

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124660.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月3日 下午8:00
下一篇 2022年4月3日 下午8:35


相关推荐

  • Metricbeat安装与初级使用

    Metricbeat安装与初级使用先到官网下载需要的版本 本例选择的是 RPM64 位 6 3 1 版本的压缩包 https www elastic co downloads beats metricbeat 默认会让你下载最新版的 如果当前版本不是你想要的可以选择其他版本点击 pastreleases 后跳转到 下载完成后进行 将压缩包通过 Xftp 上传到 Linux 系统 本例存放在 usr local src 目录

    2026年3月18日
    2
  • 伊甸园_绿田园农业

    伊甸园_绿田园农业近日,经国务院批复,《全国高标准农田建设规划(2021-2030年)》(以下简称《规划》)正式印发实施。《规划》指出,到2035年,通过持续改造提升,全国高标准农田保有量和质量进一步提高,绿色农田、数字农田建设模式进一步普及,支撑粮食生产和重要农产品供给能力进一步提升,形成更高层次、更有效率、更可持续的国家粮食安全保障基础。《规划》要求利用数字技术,推动农田建设、生产、管护相融合,提高全要素生产效率。重点推进物联网、大数据、移动互联网、智能控制、卫星定位等信息技术在农田建设中的应用,配套耕地质量综合监测点

    2022年10月21日
    4
  • Python网络编程之基于socket实现聊天机器人

    Python网络编程之基于socket实现聊天机器人

    2022年3月3日
    50
  • JS没有代码提示,用typing

    JS没有代码提示,用typing1 先安装 typings 这个包 npminstall gtypings 如果使用的是淘宝镜像 输入 cnpmcnpmityp g cnpminstallt global 输入 typingsversi 出现版本号说明安装成功如果安装失败 删除 access 所指的那个文件夹 在试一次 2 通过上面的命令 typings 这个包就下载

    2026年3月20日
    2
  • 中石化项目都是些什么工程_中海油石化工程待遇

    中石化项目都是些什么工程_中海油石化工程待遇石化项目是什么?石化项目是什么工程?下面就让中策大数据为你解答。石油化工工程就是涵盖整个石油化工系统的工程。石化项目工程内容可以划分为以下几种:1、石油化工总的区分包括化工工程、石油工程、油气工程、储运工程等;2、按照行业划分包括石油开采工程、石油加工工程、化工化纤工程、石油化工后加工工程等;3、按照建设装置的工程区分,包括常减压装置工程、催化裂化装置工程、气体分馏装置工程、加氢裂化装置工程、加氢精制装置工程、脱硫制硫装置工程、重整装置工程、芳烃装置工程、乙烯工程、等等。4、按照

    2022年10月16日
    4
  • 富士通MB95F636H输出PWM

    富士通MB95F636H输出PWMPPS 寄存器用来配置 PWM 周期 PDS 寄存器用来配置 PWM 的占空比 即占空比 PDS PPS PPGS 和 REVC 的每一位都代表一个输出 即 bit0 表示 PPG00 bit1 表示 PPG01 以此类推 当 PPGS 对应的位为 1 时启动该输出的计数 即开启 PWM 模式 REVC 表示输出是否反相 对应位为 1 则该输出反相 否则不反相 PC 寄存器是最重要的寄存器 PCn1 和 PCn0 的配置略有不同 毕竟 PCn1 是能成为 16 位 PPG 高位

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号