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