AdobeFlash播放器的安全漏洞長久以來都是大麻煩。今夏早些時候,F(xiàn)lash播放器甚至被迫在一周內(nèi)更新36個安全補(bǔ)丁。
史蒂夫.喬布斯素以反對Flash著稱,他在2010年時發(fā)表過一份措辭嚴(yán)厲的聲明,并拒絕在iPhone上兼容Flash。到2011年,Adobe宣布停止在移動設(shè)備上支持Flash播放器。
谷歌最新關(guān)于Flash的聲明則可能敲響了Flash的喪鐘。谷歌Chrome團(tuán)隊(duì)宣布將在Chrome瀏覽器中禁止加載Flash應(yīng)用,包括Flash播放器。
Chrome承諾這些變化將帶來更輕量級的網(wǎng)站:資源加載更快,電池續(xù)航更長。Chrome的決定整體上來說對網(wǎng)站是好事,對視頻流則會引起擔(dān)憂。
盡管過去幾年很多用戶已經(jīng)拋棄Flash播放器,但它仍然被廣泛使用。一些平臺包括Chrome已經(jīng)默認(rèn)使用HTML5播放器,但是目前它們?nèi)匀荒軌蚣虞dFlash并且回退到Flash播放器。那么,F(xiàn)lash播放器之死對視頻流意味著什么?
首先,不要擔(dān)心。盡管許多用戶使用Flash插件在瀏覽器中播放HLS流,但其實(shí)他們不必如此。
所有主流移動瀏覽器都能夠原生支持HLS協(xié)議。不幸的是,所有桌面瀏覽器都缺少對HLS協(xié)議的原生支持。
曾經(jīng)這是一個問題,但是現(xiàn)在這個問題可以輕易繞過去。兩個開源庫hls.js和video.js可以高效地把HLS視頻流無縫轉(zhuǎn)換成字節(jié)流,稱作Fragmented MP4。得益于MSEAPI,這些Fragmented MP4能夠在瀏覽器中播放。現(xiàn)在用戶可以在任何地方播放HLS視頻流,而不必安裝Flash播放器插件。
專業(yè)播放HLS流
使用MSE播放HLS流看起來非常有前途,但是實(shí)施起來卻不那么直接。要想如愿以償,你需要從以下步驟開始:
1.集成支持MSE的庫(比如hls.js或video.js)到播放器。如果你已經(jīng)構(gòu)建定制版Flash播放器,這一步會有點(diǎn)棘手。不過這正是轉(zhuǎn)向新播放器的好理由。如今有很多性能良好的現(xiàn)代播放器,使用它們你不需要從頭編譯。想想維護(hù)播放器所花費(fèi)的時間吧。
2.確保集成的庫能夠播放HLS視頻流。許多原生HLS流實(shí)際上不是有效視頻流。我們發(fā)現(xiàn)各種各樣的問題,包括:視頻采樣重疊,元數(shù)據(jù)丟失,非對齊幀,幀尺寸變化卻沒有EXT-X-DISCONTINUITY標(biāo)志,EXTINF和片段URL之間有注釋,解碼問題,等等。
盡管Flash播放器能夠自動處理其中的一些問題,但是hls.js卻不能。因此確保視頻流正確配置非常重要。
你可以在這里檢查HLS視頻流的有效性,并在公共測試機(jī)上進(jìn)行測試:hls.js,video.js,JW7.4。
3.注意回退兼容Flash。在MSE不可用的情況下你可能需要回退到Flash播放器。MSE在以下瀏覽器上可用:
使用hls.js和video.js實(shí)現(xiàn)高質(zhì)量播放
video.js有自己基于JavaScript的庫,但是我們更看中它可靠的性能,對問題視頻流的支持,以及所實(shí)現(xiàn)的ABR算法。
最重要的是,它的社區(qū)非常活躍。關(guān)于hls.js最大的問題在于它不能在老舊瀏覽器上回退到Flash播放器。
在Peer5,我們?yōu)関ideo.js開發(fā)了一款包含hls.js的開源插件,你可以在這里查看它。
示例代碼:
奇跡發(fā)生在videojs-contrib-hls.js腳本,它支持hls.js和video.js事件,并能夠處理基本video標(biāo)簽以檢測是否本地支持hls。你可以在這里獲得最新的捆綁插件。
回退到Flash播放器
那么,如果你的平臺不能本地播放HLS并且不支持MSE該怎么辦?如果用戶使用老舊瀏覽器,或者視頻流是不支持的格式,有如下兩種替代辦法:
1.向用戶發(fā)送錯誤信息,解釋當(dāng)前情況。這是hls.js的默認(rèn)做法。對于內(nèi)容提供商來說,他們的觀眾都使用現(xiàn)代瀏覽器,這才是最有價(jià)值最需要關(guān)注的部分。在解決方案中包含F(xiàn)lash回退很麻煩,也不值得這么做。
2.加載Flash播放器,播放視頻流。像IE 8-10這樣的老舊瀏覽器,占據(jù)大約20%的互聯(lián)網(wǎng)流量。因此很多廣播提供商希望能夠回退到Flash播放器。
結(jié)論
Flash播放器即將壽終正寢,但是不用擔(dān)心HLS視頻流播放問題。如果在播放器中集成Peer5的開源代碼,不管是原生支持還是通過MSE,所有現(xiàn)代瀏覽器都能夠播放HLS視頻流。
作為額外福利,視頻流在老舊瀏覽器播放時還能夠回退到Flash播放器。現(xiàn)在,所有HLS流都能夠在沒有Flash的情況下無縫播放。
長話短說
1.Flash播放器將很快在現(xiàn)代瀏覽器中禁用;
2.從Flash播放器遷移到MSE將會極大提升對HLS流的支持;
3.有很多基于MSE的庫能夠很容易集成到播放器中;
4.你很有可能為了兼容老舊瀏覽器而回退到Flash播放器;
5.所有你要做的就是集成Peer5的開源代碼到你的播放器中。
原文地址:https://blog.peer5.com/flash-is-dying-in-december-long-live-html5-video-player/
更多資料可關(guān)注官方公眾號:編風(fēng)網(wǎng)(微信ID:befoio)或 WebRTC編風(fēng)網(wǎng)(微信ID:webrtcorgcn)