理解RTMP协议——简单认识

本文梳理了RTMP协议的基本概念
访问 个人博客了解更多

前言

直播行业的兴起,带动了音视频相关技术的发展,本文介绍 RTMP 协议,让人快速理解它。看下面一张视频直播的大致架构图,找找 RTMP 的位置,明白 RTMP 扮演的角色与重要性html

在上面,RTMP 在视频直播场景的架构中,担任了重要的"血管"般的角色java

简单介绍

RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。nginx

RTMP是一个应用层协议,有多路复用的特色,传输内容有视频、音频、控制命令git

RTMP 在音视频相关的协议中,它的突出特色是:链接可靠、低延时github

RTMP 基于 TCP

RTMP 是基于TCP的二进制协议,(顺便一提,http为普遍应用的明文协议之一)shell

rtmp-base-on-tcp

RTMP 默认端口 1935后端

  • 基于 TCP 的好处缓存

    • 提升了RTMP的可靠性
  • 基于 TCP 的弊端

若是网络条件差时,因为TCP存在重传的机制,因此致使RTMP存在累计延时。当网络状态差时,服务器会将包缓存起来,致使累积的延迟,待网络情况好了,就一块儿发给客户端。安全

解决 RTMP 累计延时的弊端

解决 RTMP 累计延时的弊端的方法:服务器

  • 数据下发的角度,服务端上设置对客户端的缓冲区空间大小,一旦累计的缓冲超过限制,服务端就断开链接,迫使客户端在恢复网络时发起从新链接的请求。
  • 流媒体推流(上传)的角度,上传流媒体的发布方既能够是服务器也能够是客户端App,发布方发现当前队列中未处理的的视频和音频帧数累计达到必定数目(如50帧),则清空该队列,直接处理最新的实时数据(严格意义上,须要保留关键帧,清除预测帧)。

RTMP 的 HTTP 变种与防火墙

rtmp 有三个变种:

  • 工做在TCP之上的明文协议,使用端口1935
  • RTMPT封装在HTTP请求之中,可穿越防火墙
  • RTMPS相似RTMPT,但使用的是HTTPS链接

穿越防火墙的意思是,可能出于安全考虑,互联网中某一些网络(好比小区、校园网)的防火墙限制了http/https之外的协议访问,只容许访问外网ip的 80 端口与 443 端口,或者还容许其余协议,而明文协议的 rtmp 默认端口 1935 不在防火墙开放访问的端口中,没法创建链接。出于现实考虑,使用 http/https 封装 rtmp 协议,加强兼容性。

RTMP Server

  • FMS Wowza (Flash Media Server),商业产品,Adobe公司的产品,license很是昂贵。wowza最突出的特定是多终端适应性,这个在现在多媒体融合的网络环境下有很强的实用意义。

如下开源项目:

Reference

相关文章
相关标签/搜索