Android&iOS視頻直播之旅

  如今的移動互聯網時代,你們的網速真是愈來愈快,高帶寬的WIFI和覆蓋率極大的4G,4G+把手機觀看視頻直播推上了風口浪尖,愈來愈多的應用在玩手機視頻直播,咱們作的應用裏也要嵌入視頻直播。html

  這篇文章裏咱們暫時不討論視頻的推流(視頻推流通常使用RTMP推流協議,強烈建議使用OBS進行推流,親測十分強大)。咱們在這裏僅僅來聊聊視頻直播拉流的框架級方案(固然你們也能夠本身嘗試去寫一個支持實時流媒體的播放器出來,如今的主流播放器基本都是去修改變異FFmpeg實現的)。git

  在嘗試嵌入直播功能時,我尋找了許多解決方案,包括阿里雲直播騰訊雲直播雲直播保利衛視直播樂視雲直播,至於客戶端播放器也選擇了許多,好比騰訊雲提供的SDK,雲直播提供的SDK,保利威視提供的JS接口,Vitamio, ExoMedia,VCLgithub

  如今咱們依次簡單介紹下這些平臺或者框架:架構

一、阿里雲直播框架

  阿里雲直播實際上並無提供實際性的支持,只是提供了一個框架級的解決方案,進到阿里雲直播的介紹頁面,只是提供了一個框架圖,因此若是你不是爲大平臺作直播的話,不建議真的本身去弄這個架構。ide

二、騰訊雲直播工具

  騰訊雲直播是在2015年下半年才正式上線了,提供了比較好的支持,裏面有直播頻道管理,拉流轉碼管理,還提供了h5嵌入的解決方案以及SDK級的解決方案。可是騰訊雲直播的播放SDK並非很完善,好比就不支持自適應控件大小調整視頻的Size,而且不支持播放RTMP的視頻源。阿里雲

三、雲直播.net

  雲直播會提供給用戶一個帳戶以及服務碼,用戶須要經過直播雲的SDK獲取使用它的推流Demo進行推流,而且,一個頻道的直播拉流地址會每次都改變,這個給觀看視頻增長了難度,直播雲也贊成提供了一個播放器去播放rtmp以及hls,可是作的實在不敢恭維,缺乏了許多必須的功能,好比視頻沒法動態大小調整,沒法進行視頻全屏切換,後臺駐留Crash等等,因此基本不用考慮使用直播雲的播放sdk。視頻

四、保利威視

  保利威視的後臺管理和騰訊雲比較接近,一樣有頻道管理,可是在後臺沒有給出推流地址,不過保利威視的技術人員說能夠提供,可是保利威視不能給出拉流地址,只容許用戶用WebView嵌入JS的方式去播放直播,這給客戶端形成了大量的麻煩,好比因爲JS是使用了h5的Video標籤,沒法對外提供用戶點擊了全屏,點擊了暫停等用戶行爲的暴露藉口,使得客戶端很難在原生層定製播放器所在的頁面,一樣,播放器的樣式也受到了極大的限制。

五、樂視雲直播

  樂視雲直播我沒有實際使用過,只看過它的官方文檔,光看文檔可以看出來樂視雲直播的後臺管理和騰訊雲直播相差不大,樂視也提供了一個播放SDK,這個SDK明顯要比騰訊的好一些,文檔也更全面一點,功能也更豐富。可是看文檔只支持RTMP的直播拉流,並不支持HLS的樣子。有機會我會去耍耍。

六、Vitamio

  Vitamio中文又稱維他蜜,是北京的一個公司製做的商業開源萬能播放器,基本你能想到的播放協議,它所有都能支持,Vitamio目前的Android版本已經到了5.0了,2015年的時候剛出了iOS版的Vitamio播放器。可是畢竟是商業播放器,它不容許公司應用非受權狀況下使用,據說受權的價格十分昂貴,若是不受權,也得不到Vitamio團隊的技術支持,Vitamio Android版雖然到了5.0版本了,可是在我用下來後,仍是問題不少的。比較致命的是

  1.常常出現聲軌丟失(iOS版正常,一樣的播放地址,Android版卻丟失了聲音)

  2.視頻播放中或者暫停中若是切到後臺或者其餘頁面(onStop後)會自動中止播放,而且在從新進入的時候自動從頭播放

  3.視頻Seek常常失敗,或者不許確

  4.播放hls視頻源時常常會莫名結束(官方說會經過設置超時時間來解決這個問題,可是一直沒有提供設置超時時間的接口)

七、ExoMedia

  可能這個框架並非十分有名氣,只是Github上的一個開源庫。它是基於Google的ExoPlayer開發的,不過在播放視頻直播上,目前只支持HLS協議。可是在播放器的其餘功能方面我的以爲並不弱於Vitamio。

八、VCL

  這個提及來就有些來頭了,vcl不是通常開發者能夠嵌入的,須要必定的C++/C的代碼能力,好比VCL For Android就須要去寫jni來接入VCL了。據說Vitamio也是VCL的一個變種。

  說了這麼多,我在目前的應用中到底使用了什麼解決方案來嵌入了直播呢?綜合了不少因素考慮,直播平臺使用了騰訊雲,推流工具使用了OBS,讓騰訊雲同時生成了RTMP拉流地址和HLS拉流地址,iOS客戶端使用Vitamio播放RTMP(延遲短),Android客戶端使用ExoMedia播放HLS(延遲長)

相關文章
相關標籤/搜索