在視頻直播場景下,主播與用戶之間延時越短,更容易進行互動。在此背景下,客戶通常希望視頻直播的分發延時越短越好,如果需要降低直播延時,可參考如下方式進行性能優化。
優化方式一:GOP設置
- GOP(Group Of Picture)是視頻的關鍵幀的間隔,是視頻圖像編碼器和解碼器存取的基本單位。GOP由I幀開始,后面跟隨著一組B幀和P幀,直到下一個I幀之前的幀為一個GOP。當用戶第一次觀看的時候,播放器需要找到I幀才能開始播放,一般情況下直播服務器會發送緩存中最新的I幀給播放器。
- 因此,建議將直播推流端GOP設置為1~2s。縮短GOP的時長,減少播放器加載GOP的耗時來降低直播延時。
優化方式二:選擇合適的播放協議
天翼云提供FLV、HLS、RTMP三種播放協議。
- FLV:由Adobe公司推出,將流媒體數據封裝成FLV格式,通過HTTP協議傳輸給客戶端,格式簡單,只是在大塊的視頻幀和音視頻頭部加入一些標記頭 信息。支持使用HTTPS加密傳輸,支持Android移動端和iOS移動端。
- RTMP:由Adobe公司推出,傳輸的過程中消息會被拆分為更小的消息塊(Chunk)單元,再將分割后的消息塊通過TCP協議傳輸。由于其復雜的拆包和組包過程,可能導致數據傳輸不穩定。
- HLS:由Apple公司推出,基于HTTP的流媒體傳輸協議。將視頻分成多個連續的視頻小分片,然后用m3u8索引表進行管理。一般播放器會在緩存3-4個分片后才啟動播放,假設一個分片為3s,因此總延時至少約9s~12s。但HLS可以直接在瀏覽器中播放。
因此,HTTP-FLV和RTMP延時較小,適合低延時播放的場景。HLS延時較大但兼容性好,適合對延時不敏感但需要更多播放終端可以播放的場景。