WebRTC 带宽要求

WebRTC bandwidth requirements

有人知道什么是 WebRTC 带宽最低要求吗? 我对有或没有视频以及不同视频分辨率的值是什么感兴趣。我对两方会议特别感兴趣,但如果你知道每方的价值,那也很好。

如果你有实际的指标很好,但如果你知道我如何从理论上计算这也很好。

另外,不同的浏览器对带宽的要求不同?

带宽要求与opus and vp8的带宽要求几乎相同。实时音频的比特率通常为 40-200kbit/s。视频至少需要200kbit/s(500kbit/s如果你想看人脸)。

根据 webrtc-experiment,opus 的最小带宽为 6kbit/s,vp8 为 100kbits/s。所以总共有 106kbit/s 但是当你考虑到 webrtc 协议栈的开销和不断变化的网络条件时,我猜想如果想要稳定的视频和音频,200kbit/s 是最小值。

Chrome 和 Firefox 都使用 opus 和 vp8,因此带宽要求应该相同。虽然我没有任何确凿的数据可以证明。

您可以通过转到 chrome://webrtc-internals 并检查所有图表来查看 webrtc 当前生成的流量。

对于 two-party 会议,500 kbit/s 永远 conference-quality 应该足够了(每个流,因此 1 Mbit/s 负载在用户线路上)。我同意其他答案。

但是,multi-partyWebRTC 带宽可能会成为瓶颈,这不仅是因为参与者的互联网带宽,还因为 TURN 媒体中继服务器的潜在带宽限制,如果您使用一个 - 在没有的地方需要由于 NAT 设置困难,P2P 连接成为可能。 (All the details here.)

我粗略计算了一个 TURN 服务器在带宽达到最大值之前可以服务的用户数:

  • 假设我们总共有 100 Mbit/s 服务器带宽(输入 + 输出),我们希望 WebRTC 流量最多使用 60 Mbit/s。

  • 因此,例如在配置 coturn TURN 服务器时,我们将输入和输出流分别设置为 30 Mbit/s(3,750,000 Byte/s,使用 bps-capacity=3750000).

  • 输出流将承受更高的负载,因为给定 n 个参与者,将有 1 个视频输入每个参与者的流和 n-1 个视频输出流,供 TURN 服务器处理。意味着瓶颈将是 30 Mbit/s 组合输出流。

  • 在最坏的情况下(根本不可能有 STUN 协商的 P2P 连接),此带宽足以满足:30 Mbit/s / 500 kbit/(s*stream) = 60视频流。

  • 给定 n 个参与者,每个参与者将有 n-1 个输出流,这意味着总共有n * (n-1) = n^2 - n 流。我们的最大。 60 个流就足够了:n^2 - n = 60 <=> n = 8.26 = ~8 名参与者 (calculation).

虽然还不确定这有多准确。