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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

《直播疑难杂症排查》之四:延时高

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《直播疑难杂症排查》之四:延时高 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

###延時的測量

一般測量延時最簡單的方法,就是推流端和播放端對著同一個時鐘,然后用播放端顯示的時間減去推流端顯示的時間,就得到了粗略的直播延時。

###延時高問題分析

首先,我們看看可能產生延時的模塊有哪些:

  • 圖像處理延時,比如畫面剪裁、美顏、特效處理
  • 視頻編碼/解碼延時
  • 網絡傳輸的延時
  • 業務代碼中的緩沖區
  • 一般圖像處理、數據拷貝、編解碼帶來的延時,都是 ms 級別的,真正會產生比較大延時的地方,一個是互聯網上的網絡傳輸延時,另一個就是業務代碼中的緩沖區了。

    網絡傳輸延時

    數據在網絡上傳輸,從一個節點經過多級服務器轉發到達另一個節點,是不可避免有物理延時的,下面這個表格給出了理論上數據在光纖中的網絡傳輸的時間(實際場景中的延時往往比這個要大很多,因為涉及到帶寬、網絡抖動等干擾):

    由該表可以看出:播放端離推流端或者邊緣服務器節點的物理距離越近,延時會越小。

    業務代碼中的緩沖區

    業務代碼中的緩沖區,主要是推流端的緩沖區和播放端的緩沖區,一個 30 fps 的視頻流,緩沖區每滯留 30 幀,延時就會增大 1s,那么,它們是怎么產生緩沖數據的呢 ?

    >>>>推流端的數據怎么「積累」起來的呢 ?

    采集 -> 編碼 -> 數據發送 -> [服務器] 當網絡產生抖動的時候,「數據發送」會因此減慢,產生一定的阻塞,從而導致這些數據會被 「積累」在了推流端的發送緩沖區中。

    >>>>播放端的數據怎么 「積累」起來的呢 ?

    [服務器]-> 數據接收 -> 解碼 -> 渲染 當網絡產生抖動的時候,服務器的數據無法「及時」地傳輸到播放端,而由于 TCP 協議的可靠性,所有的數據都會被服務端積累起來,在網絡恢復良好的時候,會快速傳輸到播放端,這些數據會被動地?「積累」在接收緩沖區中。

    >>>>怎么消除業務緩沖區的累計延時呢 ?

    推流端的發送緩沖區,可以在網絡恢復良好的時候,快送發送出去,從而消除掉這個累計延時。

    播放端的接收緩沖區,可以通過丟幀或者加速播放的方式快速消費掉緩沖區中的數據,從而消除累計延時。

    協議延時

    通常標準的直播協議有 RTMP,HLV,HLS 三種,一般 RTMP/HLV 協議的延時在 1~3s,HLS 協議的直播延時則會更大,注重延時的直播應用,大都會選擇 RTMP/HLV 協議,這些協議均是基于 tcp 的協議,tcp 協議的多個特性導致其延時明顯要高于基于 udp 的私有協議,主要有如下方面:

    • 建立連接的三次握手
    • ACK 機制
    • 丟包重傳

    因此,如果想從本質上解決直播延時問題,還是要換成基于 udp 的私有協議來傳輸數據。

    ?

    轉自:七牛云的個人空間

    總結

    以上是生活随笔為你收集整理的《直播疑难杂症排查》之四:延时高的全部內容,希望文章能夠幫你解決所遇到的問題。

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