移動直播(MLVB)和實時音影片(TRTC)如何計算上行或下行網速?
- 2019 年 12 月 4 日
- 筆記
一、基礎概念
- 碼率
音影片場景下,有影片畫面就有影片碼率,有音頻數據就有音頻碼率。碼率可以簡單理解為有多少數據量。
- 網路頻寬 Kbps
Kbps 經常出現在網路頻寬中,其表示的意思是指每秒鐘傳送多少個千位的資訊(K表示千位,Kb表示的是多少千個位, ps是指每秒),一般的公司都是以Kb(注意是小寫的b)來表示網路頻寬的。
- 網速 KB/s
我們常常會發現網路傳輸速度是以 KB 來表示的(注意是大寫的B),比如我們用迅雷下載東西,在速度一欄裡面常 常看到的是KB/s,這又是怎麼回事呢?那是因為我們用來表示文件的大小往往採用的是位元組(KB),因為如果用位 來表示文件大小的話數字有點過於龐大,不易記憶,所以採用位元組來表示。
- 比特 bit
bit 電腦記憶體中最小的單位,在二進位電腦系統中,每一bit 可以代表0 或 1 的數位訊號。
- 位元組 Byte
一個 Byte 由8 bits 所組成,可代表一個ASCII碼,比如:字元(A~Z)、數字(0~9)、或符號(,.?!%&+-*/),是記憶體儲 存資料的基本單位,至於每個中文字則須要兩Bytes。
二、計算公式
當記憶體容量過大時,位元組這個單位就不夠用,因此就有千位元組的單位 KB 出現,以下乃個記憶體計算單位之間的相關性:
- 1 Byte = 8 Bits
- 1 KB = 1024 Bytes
再者,電信ADSL網路頻寬1兆(M)實際上的單位換算就是 1Mbps/s = 1024kbps/s = 1024Kb÷8/s = 128KB/s,也就是說你的ADSL既可以說是1兆(M)寬頻,也可以說成128KB/s寬頻。
綜上所述:1秒鐘在網路上傳輸文件的大小是多少個位元組,1KB = 8Kb,用在網路頻寬上就是 1KB/s = 8Kbps。
三、移動直播(MLVB)
移動直播已經提供文檔 SDK 指標監控,我們能在回調介面中拿到數據來計算網速。
1.推流端
TXLivePushListener 的 onNetStatus 回調,會每隔1秒 – 2秒會將影片碼率和音頻碼率回調出來。具體參數如下:
- NET_STATUS_VIDEO_BITRATE
當前影片編碼器輸出的比特率,也就是編碼器每秒生產了多少影片數據,單位:kbps
- NET_STATUS_AUDIO_BITRATE
當前音頻編碼器輸出的比特率,也就是編碼器每秒生產了多少音頻數據,單位:kbps。
我們可以拿到該數據然後進行計算網路頻寬。計算公式如下:
SPEED = (VIDEO_BITRATE + AUDIO_BITRATE)/ 8 (單位:KB/s)
2.播放端
TXLivePlayListener 的 onNetStatus 回調,會每隔1秒 – 2秒會將 SDK 內部的狀態指標同步出來。其中有一個參數NET_STATUS_NET_SPEED
,表示當前的網路的下載速度,單位是 kb/s。這個能直接獲取然後在業務層面上顯示。
四、實時音影片(TRTC)
實時音影片(TRTC)回調中同樣也提供數據統計回調介面 TRTCStatistics,該類中包含了 TRTCLocalStatistics(自己本地的音影片統計資訊) 和 TRTCLocalStatistics(遠端成員的音影片統計資訊)。我們可以拿到 videoBitrate(影片發送碼率),單位:Kbps
和 audioBitrate(音頻發送碼率)單位:Kbps
,然後來計算。
TRTCLocalStatistics 和 TRTCRemoteStatistics 都是回到出影片數據和音頻數據,都可以按照一些計算公式來計算:SPEED = (VIDEO_BITRATE + AUDIO_BITRATE)/ 8 (單位:KB/s)