日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg推拉流优化方案

發布時間:2024/8/1 编程问答 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg推拉流优化方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ffmpeg推拉流優化方案

文章目錄

  • ffmpeg推拉流優化方案
      • 一、卡頓優化
        • 設備老舊
        • 視頻流音視頻不同步
        • 網絡
      • 二、延時優化
      • 三、傳輸協議優化
      • 四、首屏秒開優化
        • 服務器做優化
        • 客戶端優化
      • 五、弱網優化
      • 六、DNS劫持優化
      • 七、服務端cdn優化

主要從以下幾點來優化

  • 卡頓優化
  • 延時優化
  • 傳輸協議優化
  • 首屏秒開優化
  • 弱網優化
  • 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節點,同時用戶和這個節點做交互。

總結

以上是生活随笔為你收集整理的ffmpeg推拉流优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。