第二篇博客——RTMP协议简述
1.什么是RTMP协议
RTMP(Real-Time Messaging Protocol实时消息传送协议)的缩写,它是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的协议。这是一个标准的,未加密的实时消息传递协议,默认端口是1935,如果未指定连接端口,那么flash客户端会尝试连接其他端口,其尝试连接顺序按照下列顺序依次连接:1935、443、80(RTMP), 80(RTMPT)。
2.RTMP协议应用优势
1、使用RTMP技术的流媒体系统有一个非常明显的特点:使用Flash Player作为播放器客户端,而Flash Player现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。
2、RTMP协议有效的保证了媒体传输质量,使用户可以观看到高质量的多媒体。RTMP采用TCP协议作为其在传输层的协议,避免了多媒体数据在广域网传输过程中的丢包对质量造成的损失。此外RTMP协议传输的FLV封装格式支持的H.264视频编码方式可以在很低的编码下显示质量还不错的画面,非常适合网络带宽不足的情况下收看流媒体。
3.RTMP协议用户劣势
1、当然RTMP协议也有一些局限,RTMP基于TCP协议,而TCP协议实时性不如UDP、也非常占用带宽。目前就UDP的RTMFP协议能很好解决这些问题,如Adobe的AMS和800li media server。
2、RTMP协议的播放依赖于Flash Player,优势是直接将直播内容很容易就嵌入网页进行流媒体内容直播。那么它的一个局限也自然是这个协议的播放依赖于Flash Player。如果没有这个播放媒介,这个协议就没有用武之地了,如苹果的MacOS电脑,苹果IOS手机和移动设备都是屏蔽Flash Player的。目前谷歌公司也宣布Android系统也不再继续支持Flash Player。
4.RTMP协议握手
RTMP握手分为简单握手和复杂握手,现在Adobe公司使用RTMP协议的产品应该用的都是复杂握手,这里不介绍,只说简单握手。按照网上的说法RTMP握手的过程如下:
1、握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。
2、当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。
3、当客户端和服务端分别收到S2和C2后,握手完成。大白话:在实际工程中,一般是客户端先将C0、C1块同时发出,服务器在收到C1之后同时将S0、S1、S2发给客户端。S2的内容就是收到的C1块的内容。之后客户端收到S1块,并原样返回给服务器,简单握手完成。按照RTMP协议要求,客户端需要检验C1块的内容和S2块的内容是否相同,相同的话才彻底完成握手过程,实际编写程序用一般都不去做校验。
RTMP握手的这个过程就是完成了两件事:1、校验客户端和服务器端RTMP协议版本号。2、是发了一堆数据,猜想应该是测试一下网络状况,看看有没有传错或者不能传的情况。RTMP握手是整个RTMP协议中最容易实现的一步,接下来才是大头。
5.RTMP分块
想要了解的同学可以看下这位大佬的文章:一键前往
- 第二篇博客——RTMP协议简述
- 1.什么是RTMP协议
- 2.RTMP协议应用优势
- 3.RTMP协议用户劣势
- 4.RTMP协议握手
- 5.RTMP分块