最后更新:2022-07-03 00:22:17 手机定位技术交流文章

什么是RTMP? RTMP(Real-Time Messaging Protocol,实时消息传输协议(英语:Real-time message transmission protocol)是用于低延迟、实时音频、视频和数据传输的双向互联网通信协议。它由Macromedia开发(后来由Adobe收购)。RTMP的工作原理是通过建立和维护RTMP客户端与RTMP服务端之间的通信路径,实现快速可靠的数据传输。RTMP最初用于Adobe Flash Player的媒体传输,但是众所周知,2020年12月,Flash停播。这是否意味着RTMP也会消失和尘埃?当然不!在现代视频传输场景中,RTMP仍占有一定地位,特别是,与编码器合作,这从RTMP的低延迟和实时传输特性中获益。大多数编码器都有行业标准,例如 encoding.com、Bitmovin、Harmonics和AWS Elemental)可以生成RTMP数据源。同样,如Twitch、YouTube、Facebook Live、Darcast、Ant Media和Wawza等广播平台可以接收RTMP播放。本文将使你更深入地了解:
RTMP的历史
RTMP的工作原理
如何创建RTMP连接
RTMP的替代方案
RTMP的优点和缺点
事不宜迟,让我们先看看RTMP协议的历史。RTMP的历史 RTMP由Adobe推出,对于超级受欢迎的Adobe Flash播放器,数百万网站已经使用播放器显示视频给用户。在鼎盛时期,大约90%至95%的视频内容网站使用Adobe Flash播放器播放视频。
Adobe定义RTMP为:RTMP(实时信息传输协议)用于实现Adobe Flash平台技术(包括Adobe Flash播放器和Adobe AIR)之间的高性能音频、视频和数据传输。现在,作为一种开放规范,RTMP可以用于创建产品和技术,实现AMF、SWF、FLV和F4V等开放格式的音频、视频和数据传输,并兼容Adobe Flash播放器。——Adobe,然而,随着闪电的放弃,RTMP不再用于向AdobeFlash播放器发送视频,它也面临基于HTTP的MPEG-DASH和HLS视频传输协议的竞争。
但是,RTMP在视频传输到编码器的过程中仍然发挥着重要作用,稍后再谈。RTMP的工作原理如上文所述,RTMP是一种基于TCP的双向通信协议,用于数据、音频和视频传输。 RTMP的工作原理是通过建立和维护RTMP客户端与RTMP服务端之间的通信路径,实现快速可靠的数据传输。类似HTTP传输协议的HLS和DASH操作,RTMP还将多媒体流分成部分:通常,音频为64字节,视频为128字节。芯片的大小可以由客户和服务端商定.传统的观点是切削尺寸不应该太大,也不应太小。较大的切片会导致写字操作的延迟,而且太小的芯片增加了 CPU 的负载。

图片来源:维基百科
通过将视频流分成片,RTMP可以从不同视频流中编织断片,并通过单一的连接传输,这种方法叫做多路径重用。它类似于视频广播中的多轨复制统计数据。不过在实际中,将包含若干片的数据包编织在一起后,为提高RTMP传输效率,它还允许RTMP创建多个虚拟、可adresable视频传输渠道。在解码端,这些相互结合的包可以分解并重用,从而获得原始的音频和视频数据.

[CSDN背景按钮1,免费分享],包括「安道尔德音频视频开发手册+音频视频学习视频+学习文档包+大工厂面试问题+2022年最新学习路线图」
RTMP连接设置: 摇动, 连接, 现在拉动电流,让我们看看RTMP连接是如何构建的。这有助于我们更好地理解RTMP协议的工作原理。RTMP可以分为三个步骤:握手、连接和拉动电流。让我们分别看一下这三个步骤。第一步:在RTMP中握手比较简单,建立TCP连接后.在此握手过程中,每方(客户和服务端)发送三个包,C0, C1, C2(customer)和S0, S1, S2(service end),分别。以下是RTMP握手过程的解释:
客户端将C0数据包发送给服务器,该数据包包含客户端请求的RTMP版本。
然后,客户端发送包含1536字节的随机数据的C1,而不等待服务器表明它已经收到C0。
在此阶段,服务器必须等待收到C0,然后响应S0和S1(optional)。 在此阶段,服务器知道客户端要求的RTMP版本。
然后客户端和服务器交换C2和S2,然后握手完成连接建立。

图片来源:维基百科 第二步:连接 连接步骤发生在RTMP客户端和RTMP服务端之间的握手之后。在连接过程中,客户端和服务器使用AMF编码来交换编码的信息。AMF 代表 Action Message Format,用于发送Adobe Flash客户端和Flash媒体服务器之间的信息。或者,程序员可以使用AFM来序列ActionScript和XML对象图。AMF用于RTMP流传输中客户端与服务器之间的通信,指示信息的类型和内容。有关AMF的更多资料,请参阅可以在这里阅读: en.wikipedia.org/wiki/Action… 。下面的例子显示了客户端向RTMP服务器发送的信息。它使用连接URL、音频编码器、视频编码器和使用AMF版本号码。在此示例中,AMF版本为3.0。
RTMP服务器响应信息:
在这一步中,客户端和服务器也交换设置同行带宽和窗口确认大小协议信息。当成功执行,这些资料表明建立联系,然后服务器可以传输视频数据.详细定义音频视频编码器和其他参数,请参阅RTMP规格: wwwimages2.adobe.com/content/dam… 。步骤3:拉动电流 RTMP握手和连接步骤后,已建立RTMP客户端与RTMP服务器之间的连接,数据现在可以传输。为了实现数据传输,RTMP规范定义了下列命令:
createStream
play
play2
deleteStream
closeStream
receiveAudio
receiveVideo
publish
seek
pause
通过这些指示,只有使用RTMP协议才能传输视频。现在你对RTMP连接的工作原理有了基本的了解,接下来, 让我们看看一些常见的RTMP变量.RTMP的变种是: RTMPS, RTMPT, RTMFP, RTMPE, RTMP Proper。我们将简要介绍特定用途的RTMP变量,让我们从RTMPS开始。RTMPS: RTMPS只是基于TLS/SSL连接的RTMP。与RTMPE相比,RTMPS的设置和使用更加复杂,但它可以保证一定程度的安全。如果你打算使用RTMP发送视频到Facebook Live,你需要使用RTMPS(源代码: developers.facebook.com/blog/post/2… )。RTMPE: RTMPE使用工业标准加密,包括Diffie-Hellman键交换和HMACSHA256。它生成了一对RC4键,其中:
第一个键用于加密从服务器发送到客户端的媒体数据。
第二键用于加密发送到服务器的数据。
RTMP Proper(英语:RTMP Proper)指一种基于TCP的RTMP变形,使用1935年端口。RTMPT: RTMPT基于HTTP协议,它是HTTP加密的RTMP协议。它允许RTMP信息通过防火墙,包含的信息可以是RTMP Proper 、 RTMPS或 RTMPE数据包。RTMFP:基于UDP协议的RTMPF(而非TCP),它也不使用RTMP Chunk Stream。RTMFP为P2P之间直接进行低延迟、实时音频和视频通信而设计,不需要RTMP服务器。有关RTMFP的更多资料,请参阅请阅读: www.adobe.com/in/products… 。在继续学习之前,让我们看看下面RTMP中的解码器支持。标题文件描述了下列编码器的支持:
音频:AAC,MP3
视频:H.VP6在264/AVC,FLV容器
如何支持RTMP? 一些商业和开放源代码编码器以及流媒体引擎可以通过拖动或生成RTMP数据源来支持RTMP。
OBS Studio,免费广播和现场直播软件,可以生成RTMP数据源
FFmpeg
Dacast.com
Bitmovin.com
Ant Media Server
Wowza
其他RTMP拖放解决方案。由于Adobe已停止支持Flash,RTMP现在面临一个不确定的未来。对于推流而言,你可以考虑其他选择。HLS是RTMP的流行替代品。HLS是流媒体行业认可的标准,从编码器、包装器、加密(DRM)、CDN到设备播放,它得到了视频生态学的广泛支持。另一个选择是MPEG-DASH,它是基于HTTP的视频传输协议。和HLS一样,DASH也得到了广泛的支持,它也可以被视为RTMP的替代品。HTTP协议存在问题,也就是说,它们增加了系统延迟。通常情况下,在HLS和DASH中,你必须制作一定数量的视频剪辑,您可以创建 DASH列表或HLS播放列表。没有播放列表或列表,播放器无法理解生成的视频流.等待播放列表或列表的过程会增加延迟,这通常会导致系统延迟45秒至1分钟。 不过,人们正在开发低延误DASH和HLS协议,它们可以减少基于HTTP的流媒体的延迟,它也可以缓解HTTP基于流媒体协议造成的问题。
结论我希望本文介绍RTMP对您有帮助。在未来的文章中,我们将研究RTSP、RTMP和RTSP之间的区别,以及如何使用像OBS Studio这样的流行工具来实现RTMP拉动流。 我们下次再见,保重,请继续播放!
本文由 在线网速测试 整理编辑,转载请注明出处。