天天看點

使用七牛上傳視訊調用視訊播放器的推薦方案

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

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

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

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

播放資料統計。播放統計資料主要用于使用者觀看統計、計費、基礎服務的狀态分析、使用者行為分析等等。 

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

外觀定制。外觀定制幫助音視訊應用美化界面,提高使用者體驗。 

播放器的選擇

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

seweise palyer

JW Player free+HLSProvider

ckplayer

GrindPlayer

主要格式

mp4、flv、m3u8

mp4、flv

播放技術

flash&html5

外觀設定

支援

不支援

播放清單

廣告

統計資訊

字幕

DVR

直播

rtmp、hls

rtmp

hls

HLS加密

不支援(需premium和Enterprise版)

128bit

收費

免費/開源

免費/開源(不能用于商業用途)

免費

開源

可以看出,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的不足之處在于對拖動播放(seek)支援不好。拖動播放是使用者常見的一種播放行為,當使用者需要跳過某些内容,或者音視訊應用支援進度條打點和縮略圖功能的時候,拖動播放有着非常重要的作用。正常情況下,播放器需要将MP4音視訊檔案緩存到拖放點,才能開始正式播放。但這會導緻使用者長時間等待,并且産生大量的廢流量。有一些工具可以幫助服務端提供支援“?start=…”這樣的參數,但在使用上存在諸多限制和問題。更有效的方式是将長視訊切分成片段(通常5-10分鐘一片),由一個播放清單串接起來。播放器在拖動播放時,隻下載下傳所涉及的片段,提高響應,減少廢流量。

但是這種長視訊切片的功能需要播放器的額外支援,現有播放器對此的支援不多。捷徑是使用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檔案名字尾)。 

下面的播放頁面示範了幾種播放器播放樣例視訊:

HLS:

MP4: 

FLV: 

本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/p/5179449.html,如需轉載請自行聯系原作者

繼續閱讀