ffmpeg推拉流優化方案

ffmpeg推拉流優化方案


主要從以下幾點來優化

  • 卡頓優化
  • 延時優化
  • 傳輸協議優化
  • 首屏秒開優化
  • 弱網優化
  • DNS劫持優化
  • 服務端cdn優化

一、卡頓優化

視頻播放端卡頓主要有以下幾點原因:

設備老舊

設備太老,CPU和GPU處理性能過低,計算解碼時間過長,導致音視頻卡頓

視頻流音視頻不同步

  • 服務端編碼視頻流參數配置有問題
  • 拉取的視頻流音畫不同步。例聲音連續播放,但是畫面卡住

上述需要優化的點有:

  • 設置合理的配置參數,合理的幀率、碼率、分辨率和I幀(關鍵幀)的間隔。
  • 調整編解碼算法,如按照視頻編碼H.264/H.265規範,編碼完整的視頻數據

網絡

當網絡狀況不好時,可以監聽網絡變化,切換低碼率的視頻流拉取,減少卡頓的出現

二、延時優化

低延時是直播播放的主要要求之一。實現低延時需要需要根據響應的階段執行不同的優化方案

1.採集處理數據階段 – 處理數據的延時-美顏、濾鏡等

在採集到音視頻數據後,需要增加一些視頻效果,如美顏、水印、濾鏡等效果,這些操作會耗費大量的CPU資源,可以將這部分交由GPU處理,可以大大減少處理數據的延時

2.編碼階段 – 編碼耗時的幀,設置了不合理的參數值

  • 編碼前丟幀,減少編碼的耗時。例如丟掉B幀,B幀解碼時需要依賴前後視頻幀(I或P幀),會增加延時。所以在編碼前丟棄B幀,不僅能降低編解碼耗時,同時也能降低帶寬開銷。
  • ffmpeg有兩個參數
    probesize:獲得文件內容的大小,適當的大小可以減少延遲,太大會增加延時,太小會造成卡頓的現象
    analyzeduration:解析媒體所需要花銷的時間,這裏設置的值越高,解析的越準確,如果在直播中爲了降低延遲,這個可以設置得低一些

三、傳輸協議優化

應用層傳輸協議採用HTTP-FLV協議或者RTMP協議,這兩個協議延時低,可以再網絡請求和響應時快速傳輸數據,減少延時

RTMP(Real Time Message Protocol、實時信息傳輸協議)是應用層協議,用來解決多媒體數據傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題。

四、首屏秒開優化

在直播中,往往需要快速的顯示首屏畫面,防止黑屏帶來的用戶體驗差,這個時候需要做首屏秒開優化

服務器做優化

GOP即Group of picture(圖像組),指兩個I幀之間的距離,Reference(參考週期)指兩個P幀之間的距離。一個I幀所佔用的字節數大於一個P幀,一個P幀所佔用的字節數大於一個B幀。

所以在碼率不變的前提下,GOP值越大,P、B幀的數量會越多,平均每個I、P、B幀所佔用的字節數就越多,也就更容易獲取較好的圖像質量;Reference越大,B幀的數量越多,同理也更容易獲得較好的圖像質量。

  • 服務器緩存GOP,GOP的第一幀是關鍵幀(I幀),所以無需下載整個GOP,只需下載收個關鍵幀解碼播放,就能達到首幀秒開

客戶端優化

  • 爲了加快渲染速度,在做首幀渲染時,不做音視頻同步,後面再進行同步

由於人們對音頻的變化比較明顯,音視頻同步通常採用視頻追音頻的方案進行同步,所以在首幀不做音視頻同步,可以快速的渲染出圖像,而不必等待音頻解碼,做同步再渲染

  • 當網絡比較差時,對帶寬進行監測,根據帶寬切換合適的碼率播放視頻,縮短首幀的渲染時間

  • 在首幀渲染之前,做預加載或者延遲加載。減少同時帶寬和CPU的暫用,達到首屏快速加載渲染

五、弱網優化

  • 前面提到的根據帶寬,拉取合適的碼率、幀率和分辨率來播放

  • 推流端使用H.265協議,可以節約40%帶寬,但是並不是所有的手機都支持H.265協議,所以需要做額外的控制層。

  • 播放端可以通過緩存一定的數據之後再進行播放,減少卡頓次數。但是這種不減少卡頓時間

六、DNS劫持優化

運營商被劫持會向包中加入一些廣告和其他無用的東西。需要屏蔽這些無用數據。可以採取以下措施:

  • 使用HTTPS通訊

HTTPS在應用層增加了SSL協議,不同於TCP/IP三次握手,它需要其次握手,在連接階段,採用非對稱加密,來防止中間人攻擊,但是相對的也會增加性能損耗。

  • 數據安全校驗-MD5、SHA校驗

    匹配數據的md5值,防止被篡改

  • 使用HttpDNS技術

    使用自建的httpDNS服務器或者阿里雲DNS服務器,防止運營商解析DNS被劫持

七、服務端cdn優化

在分發的時候使用cdn服務,通過DNS重定向技術訪問用戶最近的CDN節點,同時用戶和這個節點做交互。

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