七牛雲儲存視頻播放器的選擇方案

問題

在依託七牛雲存儲建立視頻應用的過程中,使用者時常遇到播放的問題:選擇什麼樣的播放器?使用什麼樣的編碼和容器格式?如何適應多種客戶端?等等。

播放器的要求

視頻應用通常要求播放器具備以下的基本特性:

  • 多客戶端支持。包括:PC端(Web播放)和移動端(iOS,Android等)。具備多平臺支持的播放器有助於簡化開發,規避平臺之間的差異。

  • 常用的音視頻編碼格式支持。常用編碼格式主要是:視頻H264;音頻MP3和AAC。這些音視頻格式使用廣泛,兼容性較好。

  • 常用的容器格式支持。常用容器格式包括:flv、mp4、HLS(m3u8/mpeg-ts),mp3,aac。滿足這些格式,便可以覆蓋大多數的應用場景。

  • 播放數據統計。播放統計數據主要用於用戶觀看統計、計費、基礎服務的狀態分析、用戶行爲分析等等。

  • 廣告。廣告是視頻應用重要的變現手段。

  • 外觀定製。外觀定製幫助音視頻應用美化界面,提高用戶體驗。

播放器的選擇

可供選擇的播放器很多,但能夠很好地支持上述功能的播放器爲數不多,常用的有:

ckplayer: http://www.ckplayer.com

GrindPlayer: http://osmfhls.kutu.ru/docs/grind/

下表羅列了這幾種播放器的功能特性:

這裏寫圖片描述

可以看出,JW Player的功能最爲完整。其免費版存在功能限制,比如沒有HLS支持,但有一些開源的插件可以補充這些功能。JW Player免費版+插件的形式主要問題在於免費版不能用於商業用途。ckplayer功能很多,但缺少HLS在Web上的播放支持,所以使用上存在障礙。GrindPlayer功能比較全面些,通常的用況下,足賦使用。

因此,如果可以承擔一些費用的話,Premium版的JW
Player是最好的選擇。如果音視頻應用希望使用免費的播放器,並且沒有外觀設置之類的需求,那麼可以使用GrindPlayer。如果用戶不需要
HLS的支持,那麼可以使用ckplayer。如果GrindPlayer和ckplayer都不能滿足要求,同時又要免費,那麼可以免費版JW Player+插件。但需要說明的是,這種形式可能存在法律風險,因爲免費版JW Player不能用於商業用途。

格式的選擇

音視頻編碼和容器格式的選擇需要兼顧不同播放平臺和播放器,同時還需要最少的資源消耗量和開發量。

我們首先建議使用通用性較好的格式。頻編碼格式支持最多的應是H264,大部分的瀏覽器、移動端和播放器都支持這種編碼格式。音頻格式常見的主要是MP3和AAC,兩者獲得大多數的平臺支持。因此,音視頻應用應當儘可能以這些編碼生成視頻文件,以便免去進一步編碼轉換的麻煩。如果應用無法控制源音視頻的編碼,那麼可以在音視頻上傳後使用七牛雲存儲的音視頻轉碼功能,生成播放所需的音視頻。

容器格式相對複雜一些。不同播放平臺的支持各有不同。但是,如果選擇了合適的播放器,那麼這方面的選擇可以簡單很多。一般而言,flv格式主要用於flash播放器,mp4在html5上支持較好。而移動端(iOS、Android)上,主要支持MP4和HLS。由於iOS端排斥flash,從而無法播放flv格式。如果我們希望在所有平臺上使用統一的一種格式,那麼只有MP4。所以,一般情況下,我們建議使用MP4作爲視頻播放的主要格式。

mp4問題

MP4的不足之處在於對拖動播放(seek)支持不好。拖動播放是用戶常見的一種播放行爲,當用戶需要跳過某些內容,或者音視頻應
用支持進度條打點和縮略圖功能的時候,拖動播放有着非常重要的作用。正常情況下,播放器需要將MP4音視頻文件緩存到拖放點,才能開始正式播放。但這會導
致用戶長時間等待,並且產生大量的廢流量。有一些工具可以幫助服務端提供支持“?start=…”這樣的參數,但在使用上存在諸多限制和問題。更有效的方
式是將長視頻切分成片段(通常5-10分鐘一片),由一個播放列表串接起來。播放器在拖動播放時,只下載所涉及的片段,提高響應,減少廢流量。

HLS

但是這種長視頻切片的功能需要播放器的額外支持,現有播放器對此的支持不多。捷徑是使用HLS。HLS儘管通常用於直播,但也可以用於點播。其做法是將長視頻切片,然後用m3u8文件建立索引,由播放器解析並且自動加載和播放。

HLS的問題在於PC端的播放器支持不理想,flash播放器和桌面瀏覽器的html5都不原生支持HLS。因此,我們在選擇播放器的時候將HLS
作爲重要的一種能力。在上述列出的四種播放器中,大部分都支持HLS協議。因此,我們建議用戶選擇其中支持Web端HLS的播放器,並且使用七牛雲存儲的
視頻切片功能,將其轉換爲HLS協議,簡化應用的開發,提高用戶體驗。關於HLS播放相關支持,請參考在七牛雲存儲上播放HLS。

此外,對於有些應用,希望對於不同的用戶端採用不同的音視頻分
辨率和碼率,以適應不同的使用環境。比如,移動端採用較低的碼率和音視頻質量,而PC端採用較高的碼率和質量。更進一步,可以允許用戶根據各自不同的網絡
環境自動或者手動地選擇音視頻質量。這需要音視頻播放的多碼率的支持。HLS本身支持多碼率音視頻流,可以很方便地實現這種功能。關於HLS多碼率支持,
請參考如何利用七牛雲存儲實現HLS的多碼率播放

案例

假設有一個視頻文件: sintel_trailer.mp4,以HLS播放。需要做三件事情:

將文件上傳至七牛雲存儲。具體上傳方法參考上傳操作。

使用avthumb/m3u8功能將其轉換成HLS媒體文件。這個轉換可以在上傳時使用數據預處理功能執行轉換;或者在上傳完成後,對其進行持久化FOP。但是,無論哪種方式,都需要使用saveas功能轉碼結果保存爲指定的名稱(需要.m3u8文件名後綴)。

將轉碼後的結果構造成下載URL: http://ztest.qiniudn.com/sintel.m3u8 ,然後放入播放器,或者播放頁面的參數中。

最主要給大家推薦一款免費播放插件

插件地址:https://github.com/jackzhang1204/sewise-player

demao :http://jackzhang1204.github.io/sewise/sewise_player/demos/index.html

下面的播放頁面演示了幾種播放器播放樣例視頻:

HLS:

seweizhi:http://seweizhi.qiniudn.com/demao.html

GrindPlayer:http://www.flashls.org/latest/examples/osmf/GrindPlayer.html

seweizhi:http://jackzhang1204.github.io/sewise/sewise_player/demos/index.html

MP4:

seweizhi:https://github.com/jackzhang1204/sewise-player

FLV:

seweizhi:http://jackzhang1204.github.io/sewise/sewise_player/demos/index.html

本文轉載自:https://www.whatled.com/m/?post=1626

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章