首先,WebRTC 需要每个参与者之间的点对点连接。如果您的用例在每个会话/房间中有 300 名参与者,则每个参与者必须每隔 299 名参与者上传/下载 500kbps 的数据,这是相当大的网络流量。AFAIK,甚至谷歌将谷歌会议/视频群聊视频通话限制为 25 名参与者,他们在后台使用 WebRTC。
当有 100 多个参与者时,我怀疑您是否想使用 WebRTC 构建视频会议系统,但是,我仍然会帮助您获得您现在想要的数字,并在答案末尾解释为什么它可能不现实.
使用您的数字,假设 20% 的用户(A 组)由于他们的网络设置(例如,在 NAT 后面)需要 TURN 服务器,而其他 80% 的用户(B 组)将能够建立直接的点对点相互连接。
- A 组中的用户需要 TURN 才能与 A 组中的另一个用户连接
- A 组中的用户需要 TURN 才能与 B 组中的另一个用户连接
- B 组中的用户需要 TURN 才能与 A 组中的另一个用户连接
- 组 B 中的用户不需要 TURN 来连接组 A 中的用户,在这种情况下直接点对点连接将起作用。
使用您的数字,如果 80% 的用户属于 B 组,则意味着 #4 发生的机会约为 64%。(80% * 80%)。因此 64% 的网络流量将是不需要 TURN 的点对点连接,而其余 36% 的流量将需要 TURN 服务器来中继视频数据。
一个用户需要连接到 299 个其他用户,其中 36% 的连接将通过 TURN 路由。这转化为通过 TURN 路由的大约 107 个连接。为简单起见,假设每个用户的 299 个连接中有 100 个需要 TURN 中继。
你说每个用户最多发送 500kbps 的数据。由于每个用户需要通过 TURN 将视频发送给其他 100 个用户,这相当于大约 50000kbps 或 50Mbps。所以平均每个用户通过 TURN 消耗 50Mbps 的网络吞吐量。(另外 100Mbps 用于直接 p2p 连接)
由于每个会话中有 300 个用户/参与者,因此将 50Mbps 乘以 300,即为 15000Mbps 或 15Gbps 或 15Gb/s,即所有参与者每秒使用的总 TURN 流量。
您说最大会议长度为 200 分钟,因此 200 分钟会话期间交换的总流量为 15Gb/s * 60s/m * 200 = 180000 Gb = 22500 GB
仅供参考,云提供商对网络流量收取大约 0.07 美元/GB 的费用,因此需要高达 22500 GB 网络流量的完整 200 分钟会话可能需要 1575 美元。
WebRTC 非常适合房间/会话中的参与者数量较少的用例,因为每个参与者都必须连接到所有其他参与者。它所需的连接数以 O(n^2) 的速度增加,其中 n 是参与者的数量。
您可能想考虑使用 SFU/MFU 或调整您的数字以使其更真实。(例如,您真的需要300 位参与者同时分享他们的视频吗?)更不用说支持150Mbps 上行和150Mbps 下行网络的用户不会很多。