实时流媒体协议之RTMP

RTSP参考:实时流媒体协议之RTSP

RTMP(Real-Time Messaging Protocol)是一种用于实时数据传输的协议。它最初由Adobe Systems开发,用于在Flash应用程序之间传输音频、视频和其他数据。RTMP以其低延迟、高效的流媒体传输而闻名,特别适用于直播和实时通信应用。

RTMP流媒体是如何工作的?

RTMP 流的工作原理是获取大数据文件(如视频),并将它们切成小数据包。数据包从编码器一个接一个地发送,然后重新组合在一起,供最终目的地的查看者使用。这个过程使RTMP具有低延迟,这意味着数据传输的延迟非常短。观众更喜欢低延迟,因此 RTMP 仍然被广泛用于优化观众体验。RTMP支持两种主要模式,分别是推送(Push)和拉取(Pull)。在推送模式下,流媒体服务器将数据主动推送到客户端。在拉取模式下,客户端根据需要向服务器请求数据。

不过,RTMP只是通过互联网流式传输实时视频的过程的一部分。由于不再支持 Flash Player,并且某些浏览器和移动设备不接受 RTMP,因此它通常仅用于第一英里交付或视频流过程的第一部分。最后一英里交付,或流程的最后一部分,通常需要另一个协议的帮助,例如 HLS(后续有文章会详细介绍)。

下面是一个非常简化的 RTMP 如何用于实时流媒体视频的过程。

视频捕捉: 您的摄像头和麦克风可捕获您的视频和音频。
编码:RTMP 需要编码器才能工作。编码器处理摄像头和麦克风捕获的视频和音频数据,并将它们分解成微小的数据包,以便更快地将它们发送到流媒体服务器。
服务器处理: 流媒体服务器(如果您要流式传输到 YouTube,则类似于 YouTube 的服务器)从编码器接收数据并准备查看。
回放: 数据以可观看的格式呈现给观众,即他们可以在设备上观看的实时流。

RTMP 摄取过程的快速细分

第 1 步:握手
握手阶段涉及客户端和服务器之间的一系列快速交换。首先,客户端发送通常称为标头的内容。这基本上是一个加密签名。发送标头后,客户端会立即发送 1536 字节的随机数据。

然后,服务器以实物方式响应:它们发送一个标头,然后立即发送 1536 字节的随机数据。最后,客户端将服务器随机数据的副本发回给服务器,然后服务器将客户端随机数据的副本发回给客户端。这样就完成了握手。

第 2 步:连接
握手完成后,连接阶段即生效。连接阶段涉及使用 AMF(操作消息格式)编码进行数据交换。这在客户端和服务器之间建立了通信标准,包括视频播放、帧尺寸和带宽等的一般规范。

第 3 步:流
建立连接和通信标准后,将启动流。此阶段允许执行播放和暂停等基本用户命令。

通信模式:

RTMP 是一种双向通信协议,支持实时的数据交换。它建立在基于TCP的连接之上,使用不同的通信通道(通常是一个用于命令和控制,另一个用于音视频数据的传输)。

应用领域:

最初设计用于Flash应用程序的音视频传输,RTMP 在互联网上的广泛应用中找到了用武之地。它常被用于实时直播、在线游戏直播、视频会议和其他需要低延迟、高质量音视频传输的应用场景。

协议组成:

RTMP 由两个主要部分组成:实时消息控制协议(RTMPT)和实时消息传输协议(RTMPS)。RTMPT是使用HTTP进行封装,以允许在防火墙或代理服务器后面传输。RTMPS添加了SSL/TLS加密,提供更安全的传输。

通信通道:

RTMP 使用两个通信通道,分别是一个控制通道(Command Channel)和一个数据通道(Data Channel)。控制通道用于发送控制命令,例如连接、断开连接、流控制等。数据通道用于传输音频、视频和其他实时数据。

支持的数据格式:

RTMP支持多种音视频编码格式,包括但不限于H.264(视频编码)和AAC(音频编码)。这些编码格式使得RTMP非常适用于高质量的音视频传输。

低延迟特性:

RTMP在流媒体传输中表现出较低的延迟,这使其成为实时应用的理想选择。然而,对于某些应用场景,需要更低延迟的解决方案,因此一些替代协议和技术,如WebRTC,也得到了广泛应用。

由于Adobe在2021年宣布停止支持和更新Flash Player,RTMP的使用在未来可能会逐渐减少,而更现代的协议和技术可能会取而代之。

RTMP 协议变体

RTMP 有多种变体,包括 RTMP 本身、RTMPS、RTMPE、RTMPT 和 RTMFP。这些视频协议在直播世界中的目的略有不同。

  1. RTMP的
    RTMP 本身是 RTMP 协议的最旧版本。这是由 Macromedia(后来的 Adobe)开发的流格式,它构成了此列表中其他标准的基础。

  2. RTMPS的
    RTMPS 流使用 SSL 认证来生成更安全的流。像 YouTube 这样的大型流媒体平台仍然使用这种 RTMP 变体来保护在公共互联网服务器上直播的流媒体。

  3. RTMPE
    RTMPE 是 Macromedia 最初开发的另一种安全流式处理方法。它在 2022 年的使用仍然有限,但不使用 SSL 安全认证(这仍然是保护互联网数据和内容的主要标准之一)。

  4. RTMPT的
    RTMPT 通过隧道流式传输视频。隧道是一种通过公共网络发送私有数据的方法。尽管这在某些情况下可能很有用,但众所周知,它会在流式处理工作的流程或工作流中引入额外的延迟。

  5. RTMFP
    实时媒体流协议 (RTMFP) 是基于 UDP 而不是 TCP 构建的 RTMP 变体。该技术是许多视频会议工具以及许多具有视频直播聊天功能的社交媒体平台和应用程序的基础。此协议在此用例中首选的原因是它需要更少的数据,从而保持合理的带宽成本。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稚肩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值