網頁全終端視頻流媒體視頻直播/點播播放器EasyPlayer.js實現WEB播放H265/HEVC視頻方案介紹

H.265/HEVC是當前非常火的視頻壓縮方式,相對於大家熟知的H.264 ,平均可以帶來接近於50%的寬度節省。這對於我們做視頻的開發者而言,無疑可以在同等流量下拿到更多的Buffer,無論是直播還是視頻播放都是非常有收益的事情。

在HEVC編碼架構中,整體被分爲了三個基本單位,分別是編碼單位(coding unit, CU)、預測單位(predict unit, PU)和轉換單位(transform unit, TU)。

H.265/HEVC的編碼架構大致上和H.264/AVC的架構相似,主要也包含幀內預測(intra prediction)、幀間預測(inter prediction)、轉換(transform)、量化(quantization)、去區塊濾波器(deblocking filter)、熵編碼(entropy coding)等模塊。

但是比起H.264/AVC,H.265/HEVC提供了更多不同的工具來降低碼率。“更多的預測算法,更大的編碼單位”形象的概括了H.265架構。以編碼單位來說,H.264中每個宏塊(macroblock/MB)大小都是固定的16x16像素,而H.265的編碼單位可以選擇從最小的8x8到最大的64x64。

H.265/HEVC編碼架構:

 

H.264/AVC編碼架構:

 

同時,H.265的幀內預測模式支持33種方向(H.264只支持8種),並且提供了更好的運動補償處理和矢量預測方法。反覆的質量比較測試已經表明,在相同的圖象質量下,相比於H.264,通過H.265編碼的視頻大小將減少大約39-44%。由於質量控制的測定方法不同,這個數據也會有相應的變化。

近一兩年來,越來越多的監控廠家新出廠的設備,默認採用H265視頻編碼了。當我們要部署這類視頻應用時,客戶端解碼是個大問題。然而,安防領域的網絡攝像機(IPC)的WEB視頻直播都依賴於瀏覽器插件,對於部署在web平臺的流媒體播放器則又是一個亟待解決的難題。

要實現通用的跨平臺,跨瀏覽器支持的解碼器方案,wasm成爲目前唯一的可能。Wasm的目標就是充分發揮硬件能力,使一些耗cpu的操作可以從原生的js中剝離出來獨立運行。EasyPlayer.js流媒體播放器就支持這種方式,實現整個架構,我們採用Fetch從服務器上拉流,ffmpeg進行軟解碼,webgl進行顯示。

 

EasyPlayer.js是一款集播放http-flv,rtmp,hls,websocket於一身的H5視頻直播/視頻點播播放器,使用簡單,功能強大,能夠播放http-flv/Websocket-flv協議的直播流。支持解碼H.264視頻(Baseline, Main, High Profile全支持,支持解碼B幀視頻),同時也支持解碼H.265視頻(flv id == 12),能夠在 PC\Android\iOS 瀏覽器Webview內實現2秒以內低延遲直播播放。

隨着瀏覽器的不斷更新,wasm技術更加成熟,EasyPlayer.js現在也提供wasm版本,在性能方面會有50%~80%的提升,比較明顯。目前已可以測試使用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章