m3u8 是一種基於 HTTP Live Streaming 文件視頻格式,它主要是存放整個視頻的基本信息和分片(Segment)組成。目前 由 Apple.inc 率先提出的 HLS 協議在 Mac 的 Safari 上原生支持。
而現時,只得Safari是原生支持HLS協議。 如果你的m3u8影片需要兼容所有的瀏覽器的話, 是有點難道。你需要知道 Chrome 和 Firefox 支持的 Media Source Extensions (MSE) 處於不理想的情況。
但Youtube, Netfilx, Facebook又如何在chrome/Firefox上成功播放影片呢?
它們都是採用HLS的解決方案,大致實現流程如下:
其核心就是在於對於 m3u8 的文件解析和通過 XHR 去完成對分片內容二進製文件的獲取,然後使用 MSE 的 appendBuffer 去進行 buffer 的封裝,然後自己完成合流的工作。
而目前中國,bilibili是最早實現了基於MSE 解決方案的播放器,大概為什麼他們必須用MSE而不是優酷和騰訊的多video 方案,可能是資金,視頻轉MP4需要大量服務器,當然MSE這是技術的趨勢。
如需要在Chrome和Firefox上播放m3u8的話,最好的建議是使用Video JS。它支持多個播放核心,而且插件非常多,你只需要使用videojs/videojs-contrib-hls 就可以了。在最新的版本上,它還準備好hls的功能,所以不用加上videojs/videojs-contrib-hls也已經可以播放m3u8影片。
而使用詳細將會在另一篇文章講解。

發佈留言