RTMP完整指南:什么是RTMP,何时使用?

实时信息传输协议(RTMP)是一种广泛使用的流媒体格式。它已经存在了很多年,并已发展成为广播公司、网络运营商和许多其他行业的一个基本工具。然而,对RTMP的一些误解使它不那么受欢迎。
但究竟什么是RTMP?它是如何工作的?你应该在你的下一个直播流中使用它吗?
以下是关于这一点和更多的信息。
什么是RTMP?
RTMP是一个网络协议或系统,用于在互联网上基于传输控制协议(TCP)技术的媒体内容流。
TCP是构成互联网协议套件的组件之一。另一个重要组成部分是互联网协议,也被称为IP。
RTMP是一个网络协议或系统,用于在互联网上流媒体内容。
TCP和IP一起充当了应用层和网络层之间的通信桥梁。这样想吧,应用层包括你通常会与之互动的东西,如Mozilla Firefox浏览器或任何其他用户应用程序。
火狐浏览器要加载一个网页,必须向该网站的服务器发送一个请求。收到请求后,服务器会发送所请求的资源(即视频流、YouTube上预先录制的视频,或网页的Html代码)。
为了保持有效的通信(即避免通信被丢弃或延迟),信息必须被分解成被称为数据包的小块。这是在发送方一侧完成的,一旦收到信息,就会为用户重新组装。
TCP是处理将信息分解成可有效和高效传输的数据包或小块的组件。
IP层作为转发代理,决定在互联网上传输数据包的最佳路线。
RTMP协议被许多流行的媒体播放器使用,包括Adobe Flash Player、VLC Media Player、QuickTime Player和Windows Media Player。一些网络浏览器也支持RTMP,包括谷歌浏览器和Mozilla Firefox。
对于大多数用户来说,流媒体解决方案的首要关注点是它如何提供内容。如果流媒体分辨率质量低,对大多数消费者来说,这将是一个破坏性的问题。同样,一个具有高延迟和缓冲的流媒体解决方案,或在播放内容之前加载时间过长,也不会有好结果。
这就是RTMP的魅力所在。自开发以来,RTMP已经保证了低延迟、最小的缓冲和最好的流媒体分辨率,前提是网络连接足够强大和快速。
RTMP的另一个优点是它能够同时支持大量的流媒体,而且没有重大问题。
然而,尽管已经存在多年,RTMP最近受到了高度关注,因为该系统对其用户来说是不安全的。
以下是安全漏洞是如何产生的。
首先,RTMP协议没有内置任何加密功能。因此,在使用RTMP时,任何通信或数据包传输都有可能被未经授权的团体或中间人类型的攻击所监听到。
导致RTMP安全漏洞的另一个因素是,它的源代码在很长一段时间内是专有的。专有软件(即所有权和控制权仅限于开发或购买它的实体的软件)通常会收到定期出现的安全补丁,但这还不够。
新的漏洞经常出现,而围绕开源软件建立的社区保证了相对更频繁和更好的安全补丁。这就是RTMP错过的增强其安全态势的机会。
RTMP的变化
RTMP的变化包括以下内容。
- 实时信息传输协议服务器 (RTMPS)--与RTMP相当,只是它有加密功能,即启用安全套接字层(SSL)和传输层安全(TLS),并支持所有启用Flash播放器的播放器。它用于对防止数据在传输过程中被篡改或未经授权的访问至关重要的场景。
- 加密的实时信息传输协议 (RTMPE)--它是一个非常通用的流媒体协议,利用传输控制协议(TCP)和用户数据报协议(UDP)来传输数据。RTMPE还使用Adobe的专有加密技术对所有数据传输进行加密,以避免未经授权的访问和篡改。
- 实时信息传输协议隧道 (RTMPT)--RTMPT采用了一种隧道机制,以绕过 通常阻止所有RTMP流量的 防火墙 。在实践中,RTMPT要求客户端向服务器发送一个修改过的HTTP请求,而服务器则以几乎相似的HTTP传输来回应。客户端和服务器使用一个会话ID;一旦建立连接,两者之间就可以开始数据传输。
- 实时媒体流协议 (RTMFP)--RTMFP是RTMP的升级版,它采用了不同的编码格式UDP来实现高性能的媒体流。
RTMP流的历史
实时信息传输协议(RTMP)最初是由Macromedia开发的一个专有协议,用于在Flash播放器和服务器之间通过互联网传输音频、视频和数据。
RTMP现在被许多流行的在线服务所采用,如Facebook、Twitch和Twitter,用于视频直播。
RTMP的第一次公开发布是在2002年。2009年,Adobe发布了RTMP的开放规范版本,称为OpenRTMP。RTMP和OpenRTMP的主要区别是,使用OpenRTMP,可以使用任何媒体服务器,而不仅仅是Flash媒体服务器(FMS)。
关于开发者如何确保或配置点对点功能,开放的RTMP规范也有更大的灵活性。这是为了鼓励创新和合作,通过开发者之间的竞争和开放来开发理想的RTMP解决方案。
主要原则
RTMP 使用一种称为 "流 "的技术来传输内容。这意味着数据被分成小块传输,称为 "块"。"块 "在另一端被重新组合,因此用户可以观看或收听内容,而无需等待完全下载。
RTMP的运作方式有两个部分。第一和最后一英里的交付。
第一英里传输通常涉及使用RTMP将媒体从编码器传输到服务器。最后一英里的传输是指将媒体从服务器传输到用户的设备。在这第二部分中使用的是Flash播放器或同等能力的工具。有报道说,Adobe正在放弃对Flash的所有支持;因此,这意味着最后一英里传输的结束。
作为回应,该行业已经接受了超文本传输协议(HTTP),一个更有效的流媒体解决方案。
像RTMPT这样的RTMP变体目前采用HTTP来封装和传输媒体。
RTMP摄取如何工作
这可能是RTMP的救命稻草之一,使它能够持续这么久。随着世界 从电脑上观看媒体转向移动观看,RTMP面临着一个挑战。
首先,RTMP依靠Adobe Flash播放器来提供其无缝流媒体体验,但有一个小问题。移动设备不支持Adobe Flash播放器;基本上,RTMP对那些希望在移动设备上获得相同流媒体服务的用户来说是无用的。
作为回答,苹果公司开发了HLS协议以支持移动设备上的流媒体功能。
我们有理由期待RTMP会被淘汰。幸运的是,它与RTMP摄取一起继续存在,创造了它作为将媒体从编码器传输到服务器的理想协议的地位。
RTMP摄取优先考虑低成本编码器的功能,通常向用户提供低延迟的流媒体。
它涉及三个主要部分。
1. 握手
当一个客户想要连接到RTMP服务器时,它首先需要建立握手。这个过程开始时,客户端向服务器发送一个 "连接 "请求,其中包括关于客户端和它试图建立的连接类型的信息。
然后,服务器以 "连接 "消息作出回应,其中包括关于服务器和已建立的连接类型的信息。
最后,客户和服务器交换信息,以确认他们都仍在连接,并协商连接所需的任何参数。
2. 连接
RTMP摄取连接的主要目的是提供一种将媒体内容从源头流向目的地的方法。
媒体源可以是实时摄像机画面、预先录制的视频、音频或其他媒体。目的地通常是一个流媒体服务器,它将内容分发给观众。
一个RTMP摄取连接有三个组成部分。
- 编码器将视频和音频信号转换为可在互联网上传输的数字格式。
- 传输。这是编码信号从编码器发送到服务器的媒介;通常,这是通过UDP或TCP完成的。
- 服务器接收编码后的信号,并将其提供给观众(通常将其打包成Flash等格式)。
3. 流媒体
当用户向媒体服务器传输内容时,服务器必须首先对传入的视频和音频资料进行编码,然后再将其发送给所有连接的客户端。
将视频和音频编码并重新格式化为标准文件格式的过程被称为转码。它涉及将输入信号转换为可在各种设备上播放的形式。
更多关于流媒体有两种类型:直播和点播。直播是指实时广播,而点播是指用户可以方便地观看内容。
实时流媒体需要客户端和服务器之间的持续连接,而按需流媒体则不需要。
RTMP使用TCP来维持客户端和服务器之间的持久连接,允许低延迟的流媒体。然而,RTMP并不十分适合于按需流媒体。
摄取的RTMP替代品
SRT和WebRTC是主要的竞争者,它们可以与RTMP的能力相媲美或超越。下面是对这两个替代品的简要预览。
安全可靠的传输(SRT)
SRT填补了RTMP无法处理的空白,例如在用户连接到相对不可靠的网络时也能保持低延迟的流媒体。这使它成为直播和点播流媒体的最佳选择。
由于它是开源的,其能力的限制是无限的,而且不用担心开发支持会被撤销。
网络实时通信(WebRTC)
WebRTC以其基于浏览器的发布而获胜。WebRTC HTTP摄取协议(WHIP)也在进行中,这对用户来说意味着他们将能够只用一个网络浏览器进行流媒体,而不是像RTMP那样麻烦地使用编码器。
出口的RTMP替代方案
在RTMP出口替代品的名单上,最重要的是HTTP实时流媒体(HLS)、MPEG-DASH和WebRTC。
下面是对替代品的简要预览。
HLS和MPEG-DASH
这两者实际上是一样的,只是HLS是专有的,而MPEG-DASH是开源的。
这两者最好的一点是,它们被设计为提供低延迟、最佳的媒体质量,甚至可以在不可靠的网络连接下工作。
WebRTC 也是RTMP出口解决方案的一个值得注意的替代品。
RTMP和Flash正在消亡吗?
简短的答案是:可能不会。长的答案则有点复杂。
HTML5的普及率稳步上升,以及Flash替代品的大量涌现,可能让人觉得RTMP和Flash正在消亡。但事实并非如此。
Flash走下坡路已经有一段时间了,近年来,它的市场份额被HTML5夺走,它在视频领域曾经的主导地位现在一直受到威胁。
尽管如此,它在网络上仍有很大的影响力,许多流行的网站都在使用,包括YouTube和Facebook。
至于RTMP,它仍然被广泛用于流媒体音频和视频内容。然而,它的未来不如Flash那么确定。
Adobe已经宣布,它将在2020年停止支持RTMP,这可能标志着这个协议的结束。尽管如此,有很多基于RTMP的替代品,所以它可能会在未来几年继续以某种形式被使用。
那么,你应该使用RTMP流媒体吗?
这取决于。请看一下使用RTMP的一些优点和缺点。
优点
- 它非常稳定。与市场上的其他替代品相比,在使用支持RTMP的服务时,非常不可能遇到任何中断或停机。
- 低延时和最小的缓冲。RTMP在这方面是独一无二的,这意味着用户可以以更好的分辨率观看视频,而且媒体加载的时间会大大减少。
- 兼容性。RTMPS的强大和可靠的特性鼓励更多的制造商设计他们的产品,以便与RTMP轻松集成。
弊端
- RTMP要求在客户端和服务器之间有一个持久的连接,如果网络中断,这可能是个问题。
- 作为一个专有软件,对于强大的用户来说,几乎没有什么灵活性。
常见问题
我如何使用Wave.video通过RTMP进行流媒体播放?
如果你想通过RTMP进行视频流,Wave.video是一个不错的选择。以下是 如何 使用它。
- 在Wave.video创建一个账户,如果您还没有登录,请登录。
- 选择你想要的视频流。
- 导航到Wave.video的 "目的地 "页面,点击 "自定义RTMP"
- 下一步,你必须找到你试图串流的内容的服务器URL和串流密钥。要做到这一点,请导航到你想看的流媒体的网站。
- 如果你不知道如何去做,你可以使用第三方应用程序或扩展来提取URL和密钥。
- 复制服务器的URL和流密钥。
- 将服务器URL和流密钥粘贴到Wave.video中。
- 创建或安排你的流。
- 打开直播室,开始播放。
这就是它的全部内容,又快又简单!
哪些编码器支持RTMP?
有许多编码器硬件和软件支持RTMP。其中一些包括
- Adobe Media Encoder
- OBS工作室
- 元素服务器
- 三轮驱动
- 线路广播
- 搅拌器
- TeraDek
- Wowza流媒体引擎
- 尼亚加拉视频
RTMP与RTSP - 哪个更好?
RTMP和RTSP是在互联网上传输音频、视频和数据的协议。它们在许多方面都很相似,但一些关键的差异使它们成为不同情况或偏好的理想选择。
以下是对两者之间关键差异的简要介绍。
- RTMP更适用于直播,而RTSP更适用于点播流。
- RTMP的延迟较低,而RTSP可以提供更高质量的视频。
- RTMP需要一个Flash媒体服务器,而RTSP可以与任何媒体服务器一起工作。
那么,哪种协议更好?这一切都取决于你的具体需求。
如果你需要低延迟并且不介意使用Flash,RTMP是一个不错的选择。如果你需要高质量的视频或想使用非Flash媒体服务器,RTSP可能是理想选择。
什么是行动信息格式(AMF)?
AMF是一种二进制格式,用于在互联网上编码和传输数据,它经常与RTMP一起使用。
AMF允许传输与RTMP不兼容的数据,如ActionScript对象。它还能使Flash应用程序和服务器之间有效地交换数据。
什么是RTMP URL,如何从Facebook或YouTube上获得它?
RTMP URL是一个独特的标识符,用于将实时视频内容流向各种平台。
它通常包含一个IP地址、域名和端口号。
你必须在这两个平台上创建一个直播事件,才能从YouTube或Facebook上获取。一旦你这样做了,你就能在事件的设置中找到RTMP URL。
最后的思考
RTMP无疑在世界范围内留下了自己的印记。它是否正在被淘汰?作为一个出口解决方案,可能是这样,进口则不是。
即使其他同样或更有能力的替代方案出现,RTMP仍将与媒体传输和流媒体有关。