如何降低直播延時

轉載請註明出處:https://blog.csdn.net/impingo
項目地址:https://github.com/im-pingo/pingos


上篇文章《直播延時講解》介紹了直播過程中延時出現的位置,如果想要降低延時需要對上文中提到的三處位置同時優化。

推流端優化

  • h264編碼一定不要開啓B幀, 解碼時B 幀依賴於前後的幀,會增加延遲。
  • h264 編碼使用 H.264 baseline profile,減少編碼時消耗的時間。
  • 音頻儘量使用AAC-LC Codec,這樣會減少編碼時消耗的時間。
  • 適當調整關鍵幀間隔(GOP大小),因爲前文說過服務器是以GOP個整數倍進行緩存的,如果GOP過大服務器端的緩存也會變大,建議設置爲2s(同等清晰度夏,GOP越小視頻碼率越大,如果你對延時比較敏感,可以考慮設置爲1s)。

OBS設置示例

服務器端優化

對於服務器端來說,可優化的點並不多,無非是對緩存大小進行優化。直接以PingOS服務器爲例:

配置項 優化項 講解 配置示例
cache_time 緩存大小 以時間爲單位的配置項,緩存大於等於整數倍個gop長度的數據 cache_time 2s;
low_latency 開關 on/off 低延時選項,開啓後服務器緩存中如果有新的關鍵幀,則跳過P幀,從新的關鍵幀處開始分發 low_latency on
send_all 開關 on/off 第一次向播放端發送數據時,是否一次性將緩存數據全部下發,如果一次將緩存數據全部下發,則相當於將服務器緩存積累的延時拋給了播放端,這樣的話,即使設置了low_latency也沒用,因爲緩存中已經無數據可跳過 send_all

服務器配置示例

application live {
    live on;
    cache_time 2s;
    low_latency on;
    send_all off;
}

播放端優化

播放端的優化因播放器而定,這裏以flv.js播放器爲例,圖中stashInitialSize的值就是播放器緩存大小,可按需調整。
在這裏插入圖片描述

QQ交流羣:697773082

QQ交流羣:697773082

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