恰逢1024程式員節日,看了不少視訊類的技術分享和成果,其中有一些我還是比較感興趣的,就是對于H5全平台直播延時的控制,經過多年的發展,現在能想到全平台的直播技術,估計就是HLS(m3u8+ts)了,但HLS直播一直以來都有一個非常麻煩的問題,那就是起播太慢,延時太高,大部分的同學都是通過降低gop、降低ts切片的時長來降低延時的,但這種情況下,能做到的最低延時也差不多2~3s,再低的情況下可能會造成不相容的問題;
同樣,我們最近也碰到一個使用者的需求,應用場景是這樣的,一個智慧類項目(智慧工地、智慧社群、智慧加油站),需要将現場視訊上雲,原來采用的是華為錄影機的RTSP流轉推到華為雲,輸出HLS流,做全網、全平台的H5直播,但HLS的延時相對較高,在某些特殊的場景中,又對延時是較為敏感的,那麼,有什麼辦法既可以解決全平台直播、又能夠較低延時呢?
我們先來做一些關于直播流媒體協定分析的讨論:
- 桌面浏覽器目前支援性較好的就是http-flv、websocket-flv直播技術,延時較低;
- 移動核心目前支援較好的就是hls,延時較高;
- 桌面浏覽器對hls的支援也比較好,但延時較高;
- 那麼,移動端是否也可以用http-flv協定呢?這樣不就解決了移動端直播延時的問題了嗎?
綜合了多個方面的考慮,flv+wasm的解決方案是可以達到這個要求的:
- flv流延時低:flv流的形态可以是http-flv,也可以是ws-flv,是一種非常低延時的直播流,目前,在很多直播平台都是支援同步輸出這種流協定的,但flv流會存在一個問題,就是在移動端會有不相容的現象,在某些不支援MSE功能的移動端浏覽器核心上,flv流是無法播放的,在iOS就直接可以肯定是無法播放的;
-
wasm全終端播放:
為了解決flv全終端播放的問題,我們引入了wasm播放技術,wasm技術不但能夠解決flv的低延時訴求,還能夠解決在各種桌面平台、移動平台、微信平台的播放需求,尤其是iOS平台,可見wasm技術已經逐漸成為主流中的必備項;
-
wasm支援H.265(HEVC)
EasyPlayer.js支援wasm研發之初的主要需求就是支援H.265,wasm支援H.265不僅能夠降低視訊直播的流量消耗,而且降低帶寬,同樣的2M H.264直播流,在H.265就隻需要1M碼率了,下載下傳更快,意味着延時更低了;
H.265的支援是非常重要的,H.265裝置普及量大、帶寬占用低、存儲消耗少,整個經濟成本控制上是不可擷取的!