flv.js 做了三件事:
1. HTML5 原生僅支援播放mp4/webm 格式,flv.js 實現了在HTML5 上播放FLV 格式視頻
2. 使Bilibili 網頁端平滑過度到HTML5 播放器,歷史遺留不再是障礙
3. 對於視頻直播,在HTML5 上支援了延遲極低HTTP FLV 播放,解開網頁端直播對Flash 的依賴
一些人問我為什麼不直接採用MP4 格式,並表示對FLV 格式的厭惡
這個問題一方面是歷史遺留問題,由於視訊網站前期完全依賴Flash 播放而選擇FLV 格式;
另一方面,如果仔細研究過FLV/MP4 封裝格式,你會發現FLV 格式非常簡潔,而MP4 內部box 種類繁雜,結構複雜固實而又有太多冗餘資料。 FLV 天生就具備串流特徵適合網路串流傳輸,而 MP4 這種使用最廣泛的儲存格式,設計卻不一定優雅。
這裡我不想談論多媒體封裝格式的優劣。 flv.js 是在HTML5 上實現自訂視訊格式播放的一個較好的範例,充分利用了Media Source Extensions, Fetch API 以及ECMAScript 6 等HTML5/Web 上較新的技術,並考驗著這些API:開發期間發現Edge 對Fetch API 的支援存在bug,發現各個瀏覽器在MSE 的實作細節上都有一些差異和問題,發現Safari 的MSE 實現健壯度較差(滑稽)
在flv.js 專案初期,Media Source Extensions (MSE) 在國內處於無人問津的狀態;而MSE API 已經過近4 年的發展演進,是HTML5 多媒體相關最重要的API 之一。 MSE 是 HTML5 上實現自訂格式播放的關鍵,flv.js 開源也是希望 MSE 能更廣泛地了解和應用。
最後,Chrome 等瀏覽器正在加速Flash 淘汰的進程,HTML5 video 由各瀏覽器廠商實現了高性能硬解,MSE 作為媒體格式擴展的補充,flv.js 證明了當前HTML5 多媒體技術已超越陳舊的Flash 。
厲害了我的哥哥…
剛出來h5 播放器的時候我猜測了一下,大概是B 站用emscripten 封裝了flv2mp4 一類的c++ 程式(反正有asm.js 嘛),然後然後 APIslice 一下交給Blobslice然後Stream 給video tag…畢竟自己搞過一個MIDI Player (https://ACGSounds.com) 大概是這麼玩的…然後flv.js 開源了…了…大吃一驚!竟然用 native js 直接讀了一遍 metadata, AAC Stream 和視訊串流…然後 remux
(我曾經受 videojs-contrib-hls 啟發把 ffmpeg 一類的東西用 emscripten 造大新聞…那個 pack 實在是太恐怖了…
這個flv.js解決了使用flv作為影片容器,並在html5播放器播放出來的一個難點。
不過。 。 。需求不高。 。 。如果我要做全html5的網站,存mp4不就好了。
不過這個是media source extension實現的,算是給了我們一個用這個介面的不錯的正面例子。
東西是個好東西,但局限性很大
別的站用flv的準備繼續用flash來實現高端的廣告功能(如x酷)
而使用html5播放器的大部分網站都會選擇將視頻存儲轉為純mp4
像我們這些第三方的卻又被cors阻擋難以實現
(早前有人問過相關人為什麼還存flv,flash遲早要死。回答說「不就是個remux的事,又費不了多少資源」… …)
不過也不是完全沒有路
如果第三方需要引入flv.js來播放b站flv,最簡單的方法,使用http://xxx.xxx.xxx.xxx/ws.acgv ideo.com地址就可以獲得任意網域播放支援
今晚我那邊是準備進行嘗試支援的
做了一晚上,但是快取跳轉的時候還是沒有cors,所以選擇放棄
挺好的,用這個框架能改出個 HLS 播放器來。這使得瀏覽器端視訊直播除了 FLASH 和 WebRTC 之外有了第三種普適的選擇。
更正一下:我沒看過 hls.js 的程式碼,想當然的認為是 C++ 程式碼轉的,沒辦法維護修改。評論中有指正,大家可以看評論。
另外,目前看來Web 端視訊播放的基礎設施已經慢慢地生長起來了,http+WebSocket+MSE +MPEG dash+Video標籤+Audio標籤+WebGL+WebRTC,這幾項技術應該能組合出不弱於native 級的視訊播放系統(非線編輯和混音暫時就別想了,不太現實),目前暫時每個模組內部成熟度還不夠,不過Web 視訊複雜應用的開發條件已經呼之欲出了。
對於其他為了廣告守護 flash 的建議者來說,bilibili 是一股清流。 。 。
我愛死這個破網站了。 。 ( ゜- ゜)つロ
我就說一句,能做出來這個,確實很值得驕傲和自豪,而且這個的過程,確實值得敬佩。
前排膜qianqian。 @謙謙
我不在乎什麼flash烤大腿之類的,反正神船滿載也就50-60度。 。 。我在意的是!
HTML5開幾十支影片不崩潰啊!
flash超過7個必死無疑!
不錯的開源專案。不過更有可能成為一個試驗性的和備用的方案。
本質上來說這個是依賴 Media Source Extensions 這個實作的。
這意味著這個東西在移動端基本上是面對 ios safari 這個無解的東西,從而把 flv 在瀏覽器中播放帶給移動端的可能性在短期內斬斷了。
在實作思維上來講,比較接近 hls.js ,就是自己拉取影片資源切片然後拼接餵給 video 元素。
最後非常希望這項能長久的走下去,因為這是我看到的又一次對 flash 和視頻網站解決方案積極挑戰。還有,它是開源的、開源的、開源的!
解決了mac看B站電腦起飛的問題
順便補一句,自打各大視頻網站開啟了彈幕功能,我只要一打開彈幕功能電腦就起飛了,想想,還是B站良心,作為一隻不入流混跡在RTB公司的前端汪,沒少和視頻打交道,已經把部分視頻播放替換成flv.js 過程不太順利期待更好
以上就是如何看待B站(bilibili) 開源HTML5 播放器內核flv. js的詳細內容,更多請關注php中文網其它相關文章!
相關文章: