以Action Script 3.0(简称AS)开发Browser Player时,需要用NetStream,但现在NetStream.play只支持Http和File两种协议。上网检查youtube,tudou和youku,发现他们用的播放协议也都是Http。而以Flash Media Server(简称FMS)或Red5作为流媒体服务器时,它们提供的是RTMP协议,且这两种流媒体服务器是专门做过优化的。这两种协议,HTTP和RTMP,有几点不同:
(1)用HTTP方式: 先通过IIS 将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播放这个FLV,这种方法是播放本地的视频,并不是播放服务器的视频。因此在本地缓存里可以找到这个FLV。其优点就是服务器下载完这个FLV,服务器就没有消耗了,节省服务器消耗。其缺点就是FLV会缓存在客户端,对FLV的保密性不好。
(2)用RTMP方式: 通过NetConnection连接到FMS/Red5服务器,并实时播放服务器的FLV文件,这种方式可以任意选择视频播放点,并不象HTTP方式需要缓存完整个FLV文件到本地才可以任意选择播放点,其优点就是在本地缓存里是找不到这个FLV文件的。其优点就是FLV不会缓存在客户端,FLV的保密性好,其缺点就是消耗服务器资源,连接始终是实时的。
由以上分析可以知道,Http方式是本地播放,而RTMP方式是服务器实时播放。
(3):RTSP:
RTSP 1.0标准的制订者没有充分预测到互联网带宽的快速增长,以及由于IPv4地址短缺导致的NAT技术的广泛使用,还有代理服务器的大量存在,它在传输可靠性和易用性上都存在一定的缺陷。虽然各家厂商都做了一定程度的修补,比如支持RTSP over HTTP,支持NAT穿透等,但仍然于事无补。在2005之后网络视频大爆炸的几年中,RTSP 1.0并没有得到youtube, hulu, 土豆,优酷等视频服务提供商的青睐,相反,Adobe公司开发的私有流媒体技术RTMP以其优秀的易用性和富媒体的一体化集成,得到了多数视频服务提供商的追捧,成为了事实上的标准。
(4)RTMP:
RTMP多数人可能并没有听说过,但Flash大家就都会有印象。Flash技术最初是一种采用矢量图的富媒体技术,由Macromedia公司开发。Macromedia公司在2005年被Adobe公司收购。RTMP就是在Flash中嵌入视频所采用的一种实时通信协议,最初是私有的,于2009年公开。
互联网技术的发展,有一个很大的特点就是“赢者通吃”。当年与TCP/IP相提并论的ATM、令牌环等技术,现在已经少有人知。同样,在应用层的通信协议,HTTP也具备赢者通吃的潜质。HTTP协议最初是为B/S架构的网页浏览应用设计的,简单易用,但最初被认为并不适合在流媒体这类对实时性要求较高的应用领域中使用,而且会造成通信过程的额外负载比较重。但是RTMP的成功显然推翻了这一观点,因为多数场合RTMP应用都采用了HTTP作为承载,这样可以保证在绝大多数网络中都可以直接使用而不需要复杂的配置和调试。在IP网络带宽快速提升的趋势下,HTTP所造成的额外通信负载已不再重要,相反,它在易用性上的优势却越来越明显。
(5)hls(http living streaming)
从2010年起,苹果开始在iOS设备上支持一种叫做”Live HTTP”的流媒体技术,并宣布在iOS上不会支持RTSP和Flash技术。Live HTTP本质上跟基于HTTP的文件分段下载很接近。在带宽充裕的前提下,live HTTP能够实现跟RTSP和RTMP同样的流媒体播放效果,同时得到了更好的易用性,更简单的控制。
在最新一代的超文本标识语言HTML5中,视频文件的点播,同样也采用了HTTP作为其承载协议。
可以看到,HTTP在流媒体通信协议领域上“赢者通吃”,已是必然的趋势。