WebRTC App 的带宽和质量控制

Bandwidth and Quality Control on WebRTC App

我想知道 WebRTC api 是否会自动更改带宽以增加体验。据我所知,WebRTC 具有更改和限制最大值的功能。带宽如我们所愿。我寻求答案的问题是我们应该手动执行此操作还是 WebRTC 无论如何都在后台执行此操作?

我现在正在做一个项目,我的主管关心的主要问题是带宽;我通常认为 WebRTC api 会自动完成这项工作,我们不需要手动更改它,但我又找不到太多关于该主题的信息,因为它不常用。 (顺便说一句,我也在使用 EasyRTC(开源 webrtc api)让自己从硬编码中解脱出来。)

在此先感谢大家。

1) 您不需要手动管理带宽。 WebRTC 为您完成大部分常见的带宽管理任务和服务质量。

2) WebRTC 不限制连接带宽,但您的网络工具和设备会。

这是基于观察的例子 -

1) 我在 WebRTC 的帮助下制作了基于网络的视频会议应用程序。

2) 我的笔记本电脑被用作主机设备。 (即初始连接)

3) 邀请了我的2-3位同事加入会议室(他们都在同一个网络上)。视频流式传输质量很好。

4) 再次邀请更多同事加入我的房间。现在一些视频流开始关闭。

5) 您的连接带宽确实会影响质量。如果许多用户使用相同的接入点 (AP),则带宽会被分割,这将导致流式传输非常糟糕。

6) 假设一个 1080p 视频占用 15mbps 的带宽连接。那么 8 个连接将占用 8 * 15 = 120mbps 的总带宽。这超过了我笔记本电脑 100mbps LAN 端口的关闭速度。这将导致某些视频停止播放。

8 Mbps = 1 MB/s

看看这个 link - WebRTC bandwidth requirements

:)

不知道这是否对某人有帮助,但至少在版本 GoogleWebRTC (1.1.31999) 中 iOS 和 org.webrtc:google-webrtc:1.0.22672 for android PeerConnection 实例中有方法。

对于iOS:

let updateBitrateSuccessful = pc.setBweMinBitrateBps(300000, currentBitrateBps: 1000000, maxBitrateBps: 3000000)
print("Update rtc connection bitrate " + (updateBitrateSuccessful ? "successful" : "failed"))

分别为Android:

boolean updateBitrateSuccessful = pc.setBitrate(300000, 1000000, 3000000);
Log.d("AppLog", "Update rtc connection bitrate " + (updateBitrateSuccessful ? "successful" : "failed"));