恰逢1024程序員節日,看了很多視頻類的技術分享和成果,其中有一些我仍是比較感興趣的,就是對於H5全平臺直播延時的控制,通過多年的發展,如今能想到全平臺的直播技術,估計就是HLS(m3u8+ts)了,但HLS直播一直以來都有一個很是麻煩的問題,那就是起播太慢,延時過高,大部分的同窗都是經過下降gop、下降ts切片的時長來下降延時的,但這種狀況下,能作到的最低延時也差很少2~3s,再低的狀況下可能會形成不兼容的問題;程序員
一樣,咱們最近也碰到一個用戶的需求,應用場景是這樣的,一個智慧類項目(智慧工地、智慧社區、智慧加油站),須要將現場視頻上雲,原來採用的是華爲攝像機的RTSP流轉推到華爲雲,輸出HLS流,作全網、全平臺的H5直播,但HLS的延時相對較高,在某些特殊的場景中,又對延時是較爲敏感的,那麼,有什麼辦法既能夠解決全平臺直播、又可以較低延時呢?web
咱們先來作一些關於直播流媒體協議分析的討論:瀏覽器
- 桌面瀏覽器目前支持性較好的就是http-flv、websocket-flv直播技術,延時較低;
- 移動內核目前支持較好的就是hls,延時較高;
- 桌面瀏覽器對hls的支持也比較好,但延時較高;
- 那麼,移動端是否也能夠用http-flv協議呢?這樣不就解決了移動端直播延時的問題了嗎?
綜合了多個方面的考慮,flv+wasm的解決方案是能夠達到這個要求的:微信
-
flv流延時低:flv流的形態能夠是http-flv,也能夠是ws-flv,是一種很是低延時的直播流,目前,在不少直播平臺都是支持同步輸出這種流協議的,但flv流會存在一個問題,就是在移動端會有不兼容的現象,在某些不支持MSE功能的移動端瀏覽器內核上,flv流是沒法播放的,在iOS就直接能夠確定是沒法播放的;websocket
-
wasm全終端播放:
爲了解決flv全終端播放的問題,咱們引入了wasm播放技術,wasm技術不但可以解決flv的低延時訴求,還可以解決在各類桌面平臺、移動平臺、微信平臺的播放需求,尤爲是iOS平臺,可見wasm技術已經逐步成爲主流中的必備項;
socket -
wasm支持H.265(HEVC)
EasyPlayer.js支持wasm研發之初的主要需求就是支持H.265,wasm支持H.265不只可以下降視頻直播的流量消耗,並且下降帶寬,一樣的2M H.264直播流,在H.265就只須要1M碼率了,下載更快,意味着延時更低了;
視頻
H.265的支持是很是重要的,H.265設備普及量大、帶寬佔用低、存儲消耗少,整個經濟成本控制上是不可獲取的!同步