標籤:

Flash將死,HTML5萬歲

Flash將死,HTML5萬歲

10 人贊了文章

Adobe Flash播放器正像渡渡鳥一樣走向滅絕,但是這不會引起擔憂。多年來Flash播放器一直是個大問題,它的最終消亡將會引起技術界的歡呼。Flash播放器的安全漏洞比瑞士乳酪上的小洞還要多,長久以來這都是大麻煩。今夏早些時候,Flash播放器甚至被迫在一周內更新36個安全補丁。史蒂夫.喬布斯素以反對Flash著稱,他在2010年時發表過一份措辭嚴厲的聲明,並拒絕在iPhone上兼容Flash。到2011年,Adobe宣布停止在移動設備上支持Flash播放器。

谷歌最新關於Flash的聲明則可能敲響了Flash的喪鐘。上周谷歌Chrome團隊宣布將在Chrome瀏覽器中禁止載入Flash應用,包括Flash播放器。Chrome承諾這些變化將帶來更輕量級的網站:資源載入更快,電池續航更長。Chrome的決定整體上來說對網站是好事,對視頻流則會引起擔憂。儘管過去幾年很多用戶已經拋棄Flash播放器,但它仍然被廣泛使用。一些平台包括Chrome已經默認使用HTML5播放器,但是目前它們仍然能夠載入Flash並且回退到Flash播放器。那麼,Flash播放器之死對視頻流意味著什麼?

首先,不要擔心。儘管許多用戶使用Flash插件在瀏覽器中播放HLS流,但其實他們不必如此。實際上,我們去年寫過一篇博文展示如何不用Flash就能傳輸HLS流。

所有主流移動瀏覽器都能夠原生支持HLS協議。不幸的是,所有桌面瀏覽器都缺少對HLS協議的原生支持。曾經這是一個問題,但是現在這個問題可以輕易繞過去。兩個開源庫hls.js和video.js可以高效地把HLS視頻流無縫轉換成位元組流,稱作Fragmented MP4。得益於MSE API,這些Fragmented MP4能夠在瀏覽器中播放。現在用戶可以在任何地方播放HLS視頻流,而不必安裝Flash播放器插件。

專業播放HLS

使用MSE播放HLS流看起來非常有前途,但是實施起來卻不那麼直接。要想如願以償,你需要從以下步驟開始:

1.集成支持MSE的庫(比如hls.js或video.js)到播放器。如果你已經構建定製版Flash播放器,這一步會有點棘手。不過這正是轉向新播放器的好理由。如今有很多性能良好的現代播放器,使用它們你不需要從頭編譯。想想維護播放器所花費的時間吧。

2.確保集成的庫能夠播放HLS視頻流。許多原生HLS流實際上不是有效視頻流。我們發現各種各樣的問題,包括:視頻採樣重疊,元數據丟失,非對齊幀,幀尺寸變化卻沒有EXT-X-DISCONTINUITY標誌,EXTINF和片段URL之間有注釋,解碼問題,等等。儘管Flash播放器能夠自動處理其中的一些問題,但是hls.js卻不能。因此確保視頻流正確配置非常重要。

你可以在這裡檢查HLS視頻流的有效性,並在公共測試機上進行測試:hls.js,video.js,JW7.4。

3.注意回退兼容Flash。在MSE不可用的情況下你可能需要回退到Flash播放器。MSE在以下瀏覽器上可用:

使用hls.jsvideo.js實現高質量播放

video.js有自己基於JavaScript的庫,但是我們更看中它可靠的性能,對問題視頻流的支持,以及所實現的ABR演算法。最重要的是,它的社區非常活躍。關於hls.js最大的問題在於它不能在老舊瀏覽器上回退到Flash播放器。在Peer5,我們為video.js開發了一款包含hls.js的開源插件,你可以在這裡查看它。

示例代碼:

奇蹟發生在videojs-contrib-hls.js腳本,它支持hls.js和video.js事件,並能夠處理基本video標籤以檢測是否本地支持hls。你可以在這裡獲得最新的捆綁插件。

回退到Flash播放器

那麼,如果你的平台不能本地播放HLS並且不支持MSE該怎麼辦?如果用戶使用老舊瀏覽器,或者視頻流是不支持的格式,有如下兩種替代辦法:

1. 向用戶發送錯誤信息,解釋當前情況。這是hls.js的默認做法。對於內容提供商來說,他們的觀眾都使用現代瀏覽器,這才是最有價值最需要關注的部分。在解決方案中包含Flash回退很麻煩,也不值得這麼做。

2. 載入Flash播放器,播放視頻流。像IE 8-10這樣的老舊瀏覽器,佔據大約20%的互聯網流量。因此很多廣播提供商希望能夠回退到Flash播放器。

結論

Flash播放器即將壽終正寢,但是不用擔心HLS視頻流播放問題。如果在播放器中集成Peer5的開源代碼,不管是原生支持還是通過MSE,所有現代瀏覽器都能夠播放HLS視頻流。作為額外福利,視頻流在老舊瀏覽器播放時還能夠回退到Flash播放器。現在,所有HLS流都能夠在沒有Flash的情況下無縫播放。

長話短說

1.Flash播放器將很快在現代瀏覽器中禁用。

2.從Flash播放器遷移到MSE將會極大提升對HLS流的支持。

3.有很多基於MSE的庫能夠很容易集成到播放器中。

4.你很有可能為了兼容老舊瀏覽器而回退到Flash播放器。

5.所有你要做的就是集成Peer5的開源代碼到你的播放器中。

更多資料可關注官方公眾號:編風網(微信ID:befoio)或 WebRTC編風網(微信ID:webrtcorgcn)

推薦閱讀:

webrtc在民用安防行業中的應用
webrtc調試工具chrome://webrtc-internals的使用手冊-開篇
使用WebRTC構建實時通信——從攝像頭獲取視頻流(二)
WebRTC視頻通話中最多能容納多少用戶?

TAG:WebRTC |