RTSP、RTMP、HLS

关键词

RTSP

RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议。


RTMP

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写,是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。该协议基于TCP,是一个协议簇,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。


HLS

Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。


横向比较

HLS是苹果提出和推荐的音视频直播、点播的流媒体协议,它通过将媒体文件切分成若干个TS片(比如每10秒钟一片),并通过m3u列表文件将这些TS片段集中起来供客户端播放器接收。这样做有如下几个好处:
  • 一旦切分完成,之后的分发过程完全不需要额外的服务软件,普通网络服务器即可,大大降低了CDN边缘服务器的配置需求。
  • 分发协议通常使用常见的HTTP协议,所以代理服务器对这个协议的缓冲优化就相当成熟。相比之下,很少代理服务器会对RTSP协议流数据进行缓存优化,这对软件播放实时视频就有相当大的优势,因为这样的分发策略,对源服务器的负载压力小得多。
  • 对于非实时视频,同样也有类似的好处,比如你要在一个长达一个小时的视频中跳转,如果使用单个MP4格式的视频文件,并且也是用HTTP协议,那么需要代理服务器支持HTTP rang request以获取大文件中的一部分,不是所有代理服务器都对此有良好的支持。而HTTP Live Streaming则只需要根据列表文件中的时间轴找出对应TS片即可完成次任务,不需要range request,对代理服务器的要求小很多,所有代理服务器都支持小文件的高效缓存。
  • 由于不需要预先加载索引文件,大大减少了首次载入的延迟(如果MP4的媒体文件比较长,索引文件很大,那么会出现很大的延迟)。
另外,HLS还有一个巨大的优势:自适应码率流(adaptive streaming)。效果就是客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且在二者间随意切换,这个对移动设备网络状况不稳定的情况下保证流畅播放非常有帮助。实现方法就是服务器提供多码率视频流,并且在列表文件中注明,播放器会根据播放进度和下载速度自动调整。
       至于为什么要用TS而不是MP4,这是因为TS片段可以无缝拼接,播放器能连续播放,而MP4文件由于编码方式的原因,两段MP4不能无缝拼接,播放器连续播放两个MP4文件会出现破音和换面间断,影响用户体验。况且MP4不是流媒体文件,必须有索引才能任意seek。同样的flv格式文件也是流式文件,并且比其它格式都简单,但是苹果不支持,如此各家都只好去实现MPEG-TS。
IOS设备上启用HTTP live Streaming非常简单,也是苹果官方推荐的方式。Adobe的Flash流媒体服务器的新版本也要支持这个技术,这是Adobe对苹果的妥协吧。







你可能感兴趣的:(RTSP、RTMP、HLS)