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協議,本身最近研究的,若是有興趣,能夠看看個人其餘文章。
網絡

相關文章
相關標籤/搜索