流媒体系统的RTMP协议

什么是RTMP协议


RTMP(Real-Time Messaging Protocol实时消息传送协议)的缩写,它是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的协议。这是一个标准的,未加密的实时消息传递协议,默认端口是1935,如果未指定连接端口,那么flash客户端会尝试连接其他端口,其尝试连接顺序按照下列顺序依次连接:1935、443、80(RTMP), 80(RTMPT)。


RTMP协议应用优势

 

使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。


RTMP协议有效的保证了媒体传输质量,使用户可以观看到高质量的多媒体。RTMP采用TCP协议作为其在传输层的协议,避免了多媒体数据在广域网传输过程中的丢包对质量造成的损失。此外RTMP协议传输的FLV封装格式支持的H.264视频编码方式可以在很低的码率下显示质量还不错的画面,非常适合网络带宽不足的情况下收看流媒体。


RTMP协议应用劣势


当然RTMP协议也有一些局限,RTMP基于TCP协议,而TCP协议实时性不如UDP,也非常占用带宽。目前基于UDPRTMFP协议能很好的解决这些问题AdobeAMS800li media server


RTMP协议的播放依赖于Flash Player优势是直接将直播内容很容易就嵌入网页进行流媒体内容直播。那么它的一个局限也自然是这个协议的播放依赖于Flash Player 如果没有这个播放媒介,这个协议就没有用武之地了,苹果的MacOS电脑,苹果iOS手机和移动设备都是屏蔽Flash Player的。 目前谷歌公司也宣布安卓Android系统也不再继续支持Flash Player


支持此协议输出的流媒体服务器系统

 

支持该协议的软件包括Adobe Media Server,800Li Media Server,Ultrant Media Server,Wowza Media Server,Red5等。以800Li Media Server 为例,如下图:


输出发布地址及播放地址(发布地址+流名称=播放地址)


输出RTMP协议的嵌入网页的HTML代码(网页嵌入播放器代码)



RTMP协议的播放


网页播放示例




第三方播放器播放示例



相关知识


AMF(Action Message Format)是在flash和flex中与远程服务端交换数据的一种格式。它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时,通常都采用这种格式。AMF 1 诞生于Flash Player6,发展到现在已经变成了了AMF3。



RTMPT,RTMP的变种,此协建立在HTTP协议之上,是通过HTTP封装后的RTMP协议,默认端口80。


RTMPS,RTMP的另一个变种,此协议是通过SSL(Secure Sockets Layer 安全套接层)加密的RTMP协议,为数据通讯提供安全支持。SSL在传输层对网络连接进行加密,默认端口443。


RTMPE,RTMP的变种,RTMPE是一个加密版本的RTMP,和RTMPS不同的是RTMPE不采用SSL加密,RTMPE加密快于SSL,并且不需要认证管理。如果没有指定RTMPE端口,Flash播放器将像RTMP协议一样依次扫描下列端口,1935(RTMPE),443(RTMPE) ,80(RTMPE),80(RTMPTE)。


RTMPTE,RTMPTE 这个协议是一个通过加密通道连接的RTMPE,默认端口80。


RTMFP,RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。

请使用浏览器的分享功能分享到微信等