視頻應(yīng)用通常要求播放器具備以下的基本特性: 多客戶端支持。包括:PC端(Web播放)和移動(dòng)端(iOS,Android等)。具備多平臺(tái)支持的播放器有助于簡(jiǎn)化開發(fā),規(guī)避平臺(tái)之間的差異。 可供選擇的播放器很多,但能夠很好地支持上述功能的播放器為數(shù)不多,常用的有: ckplayer: http://www. 下表羅列了這幾種播放器的功能特性:
可以看出,JW Player的功能最為完整。其免費(fèi)版存在功能限制,比如沒(méi)有HLS支持,但有一些開源的插件可以補(bǔ)充這些功能。JW Player免費(fèi)版+插件的形式主要問(wèn)題在于免費(fèi)版不能用于商業(yè)用途。ckplayer功能很多,但缺少HLS在Web上的播放支持,所以使用上存在障礙。GrindPlayer功能比較全面些,通常的用況下,足賦使用。 因此,如果可以承擔(dān)一些費(fèi)用的話,Premium版的JW Player是最好的選擇。如果音視頻應(yīng)用希望使用免費(fèi)的播放器,并且沒(méi)有外觀設(shè)置之類的需求,那么可以使用GrindPlayer。如果用戶不需要HLS的支持,那么可以使用ckplayer。如果GrindPlayer和ckplayer都不能滿足要求,同時(shí)又要免費(fèi),那么可以免費(fèi)版JW Player+插件。但需要說(shuō)明的是,這種形式可能存在法律風(fēng)險(xiǎn),因?yàn)槊赓M(fèi)版JW Player不能用于商業(yè)用途。 格式的選擇音視頻編碼和容器格式的選擇需要兼顧不同播放平臺(tái)和播放器,同時(shí)還需要最少的資源消耗量和開發(fā)量。 我們首先建議使用通用性較好的格式。頻編碼格式支持最多的應(yīng)是H264,大部分的瀏覽器、移動(dòng)端和播放器都支持這種編碼格式。音頻格式常見(jiàn)的主要是MP3和AAC,兩者獲得大多數(shù)的平臺(tái)支持。因此,音視頻應(yīng)用應(yīng)當(dāng)盡可能以這些編碼生成視頻文件,以便免去進(jìn)一步編碼轉(zhuǎn)換的麻煩。如果應(yīng)用無(wú)法控制源音視頻的編碼,那么可以在音視頻上傳后使用七牛云存儲(chǔ)的音視頻轉(zhuǎn)碼功能,生成播放所需的音視頻。 容器格式相對(duì)復(fù)雜一些。不同播放平臺(tái)的支持各有不同。但是,如果選擇了合適的播放器,那么這方面的選擇可以簡(jiǎn)單很多。一般而言,flv格式主要用于flash播放器,mp4在html5上支持較好。而移動(dòng)端(iOS、Android)上,主要支持MP4和HLS。由于iOS端排斥flash,從而無(wú)法播放flv格式。如果我們希望在所有平臺(tái)上使用統(tǒng)一的一種格式,那么只有MP4。所以,一般情況下,我們建議使用MP4作為視頻播放的主要格式。 MP4的不足之處在于對(duì)拖動(dòng)播放(seek)支持不好。拖動(dòng)播放是用戶常見(jiàn)的一種播放行為,當(dāng)用戶需要跳過(guò)某些內(nèi)容,或者音視頻應(yīng)用支持進(jìn)度條打點(diǎn)和縮略圖功能的時(shí)候,拖動(dòng)播放有著非常重要的作用。正常情況下,播放器需要將MP4音視頻文件緩存到拖放點(diǎn),才能開始正式播放。但這會(huì)導(dǎo)致用戶長(zhǎng)時(shí)間等待,并且產(chǎn)生大量的廢流量。有一些工具可以幫助服務(wù)端提供支持“?start=…”這樣的參數(shù),但在使用上存在諸多限制和問(wèn)題。更有效的方式是將長(zhǎng)視頻切分成片段(通常5-10分鐘一片),由一個(gè)播放列表串接起來(lái)。播放器在拖動(dòng)播放時(shí),只下載所涉及的片段,提高響應(yīng),減少?gòu)U流量。 但是這種長(zhǎng)視頻切片的功能需要播放器的額外支持,現(xiàn)有播放器對(duì)此的支持不多。捷徑是使用HLS。HLS盡管通常用于直播,但也可以用于點(diǎn)播。其做法是將長(zhǎng)視頻切片,然后用m3u8文件建立索引,由播放器解析并且自動(dòng)加載和播放。 HLS的問(wèn)題在于PC端的播放器支持不理想,flash播放器和桌面瀏覽器的html5都不原生支持HLS。因此,我們?cè)谶x擇播放器的時(shí)候?qū)LS作為重要的一種能力。在上述列出的四種播放器中,大部分都支持HLS協(xié)議。因此,我們建議用戶選擇其中支持Web端HLS的播放器,并且使用七牛云存儲(chǔ)的視頻切片功能,將其轉(zhuǎn)換為HLS協(xié)議,簡(jiǎn)化應(yīng)用的開發(fā),提高用戶體驗(yàn)。關(guān)于HLS播放相關(guān)支持,請(qǐng)參考在七牛云存儲(chǔ)上播放HLS 此外,對(duì)于有些應(yīng)用,希望對(duì)于不同的用戶端采用不同的音視頻分辨率和碼率,以適應(yīng)不同的使用環(huán)境。比如,移動(dòng)端采用較低的碼率和音視頻質(zhì)量,而PC端采用較高的碼率和質(zhì)量。更進(jìn)一步,可以允許用戶根據(jù)各自不同的網(wǎng)絡(luò)環(huán)境自動(dòng)或者手動(dòng)地選擇音視頻質(zhì)量。這需要音視頻播放的多碼率的支持。HLS本身支持多碼率音視頻流,可以很方便地實(shí)現(xiàn)這種功能。關(guān)于HLS多碼率支持,請(qǐng)參考如何利用七牛云存儲(chǔ)實(shí)現(xiàn)HLS的多碼率播放 案例假設(shè)有一個(gè)視頻文件: sintel_trailer.mp4,以HLS播放。需要做三件事情: 將文件上傳至七牛云存儲(chǔ)。具體上傳方法參考上傳操作。 最主要給大家推薦一款免費(fèi)播放插件插件地址:https://github.com/jackzhang1204/sewise-player 下面的播放頁(yè)面演示了幾種播放器播放樣例視頻: HLS: seweizhi:http://seweizhi./demao.html MP4: FLV: |
|