移动直播(MLVB)和实时音视频(TRTC)如何计算上行或下行网速?

2019-12-04 18:47:35 浏览数 (1)

一、基础概念

  • 码率
代码语言:javascript复制
音视频场景下,有视频画面就有视频码率,有音频数据就有音频码率。码率可以简单理解为有多少数据量。
  • 网络带宽 Kbps
代码语言:javascript复制
Kbps 经常出现在网络带宽中,其表示的意思是指每秒钟传送多少个千位的信息(K表示千位,Kb表示的是多少千个位,
ps是指每秒),一般的公司都是以Kb(注意是小写的b)来表示网络带宽的。
  • 网速 KB/s
代码语言:javascript复制
我们常常会发现网络传输速度是以 KB 来表示的(注意是大写的B),比如我们用迅雷下载东西,在速度一栏里面常
常看到的是KB/s,这又是怎么回事呢?那是因为我们用来表示文件的大小往往采用的是字节(KB),因为如果用位
来表示文件大小的话数字有点过于庞大,不易记忆,所以采用字节来表示。
  • 比特 bit
代码语言:javascript复制
bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
  • 字节 Byte
代码语言:javascript复制
一个 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
代码语言:javascript复制
当前视频编码器输出的比特率,也就是编码器每秒生产了多少视频数据,单位:kbps
  • NET_STATUS_AUDIO_BITRATE
代码语言:javascript复制
当前音频编码器输出的比特率,也就是编码器每秒生产了多少音频数据,单位:kbps。

我们可以拿到该数据然后进行计算网络带宽。计算公式如下:

代码语言:java复制
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(视频发送码率),单位:KbpsaudioBitrate(音频发送码率)单位:Kbps,然后来计算。

TRTCLocalStatistics 和 TRTCRemoteStatistics 都是回到出视频数据和音频数据,都可以按照一些计算公式来计算:SPEED = (VIDEO_BITRATE AUDIO_BITRATE)/ 8 (单位:KB/s)

0 人点赞