RTMP,RTSP,HLS比较与分析

       考虑作一个手机直播系统,首先须要指定一个合理的技术方案。因为本身之前不是搞多媒体这块,对流媒体开发不熟悉,本身的理解思惟总习惯用java web开发的惯性走,先指定一个大致的框架。无论对仍是错,先考虑其技术可行性。

      框架的指定,首先取决于本身采用的流媒体协议,咱们熟知的流媒体协议有RTMP,RTSP,HLS。
      先谈一下HLS,这个协议接触得最先,本身的我的理解,若是要开发一套准实时的手机音视频直播系统,须要支持 iphone,android,windows phone等多款手机,这个协议真心不错。为何是准实时呢,由于客户端播放的是最新切割的ts文件,它的延迟取决于切片的大小。
html

参考文章http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html ,其思路步骤: java

一、采集视频源和音频源的数据 android

二、对原始数据进行H264编码和AAC编码 nginx

三、视频和音频数据封装为MPEG-TS包 c++

四、HLS分段生成策略及m3u8索引文件 web

五、HTTP传输协议 redis

      这里面的不少步骤须要用到ffmpeg编解码库,好比编码, 切片等。方便之处是可使用普通的http服务器就ok了,推荐使用nginx,这是一款功能无比强大的web服务器,其反向代理,性能好的不可言喻。 windows

      HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工做原理是把整个流分红一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端能够选择从许多不一样的备用源中以不一样的速率下载一样的资源,容许流媒体会话适应不一样的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。 服务器

      HLS只请求基本的HTTP报文,与实时传输协议(RTP)不一样,HLS能够穿过任何容许HTTP数据经过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。有三种方式搭建HLSserver,一种是利用apple SDK,一种是利用adobe 的fms,4.5版本支持hls,参考,http://www.adobe.com/products/flash-mediastreaming/features._sl_id-contentfilter_sl_featuredisplaytypes_sl_new.htmladobe的fms如今很强大,可是商用须要licence。有兴趣的能够研究下。还有一种是利用opensouce.我比较喜欢这一种。
      RTSP协议,这应该是实时性最好的了,若是要想实时性要求很高,好比0.5s之内,这个是不错的选择。前阵子模仿spydroid写了个建议的rtsp 服务器,其实就是options,describe,setup,play,pause,teardown这几步了,这个协议用的最普遍,网上介绍也比较 多。要想真正深刻了解rtsp协议,c++语言功底好的能够查看live555 。
      RTMP协议,本身最近研究的,若是有兴趣,能够看看个人其余文章。
网络

相关文章
相关标签/搜索