RTCPeerConnections 的 CPU 使用率高

SB2*_*055 5 javascript performance google-chrome webrtc

我有以下设置:

在此处输入图片说明

这个想法是计算机 A使用 getUserMedia从Cam 1捕获单个本地 MediaStream 。然后在本地创建两个 RTCPeerConnections - R5OutboundR6Outbound。计算机 B 和计算机 C 创建自己的入站 RTCPeerConnections 来捕获此流。

我注意到带有 i7 CPU 的计算机 A 运行很热,并且在达到 95% 以上的 CPU 后,偶尔会使用以下设置使我的 Chrome (60) 实例崩溃。

经过一些阅读,我开始认为我在这里创建了太多的 RTCPeerConnection 实例;尽管在某些情况下多个流来自单个设备,但我对如何正确创建和管理我的 RTCPeerConnections 感到有些困惑。我的问题是 - 鉴于上述拓扑结构和所有计算机都需要查看所有流的要求(尽管有些计算机可能没有要共享的流),应该创建什么 RTCPeerConnections?

我应该注意到现在需要网格;业务限制让我们渴望但无法使用MCUSFU架构。

一些问题的答案:

计算机 A 有多少 RAM 和磁盘空间可用?

16GB / >1TB SSD。

为什么计算机 A 需要两个出站流?两个出站流的目的是什么?

计算机 A 连接了两个摄像头。每个摄像头捕获一个流。然后每个流都与其他计算机共享。

您是否克隆了原始流来为 R5Outbound 和 R6Outbound 提供 MediaStream?

双方R5.OR6.O使用相同的MediaStream实例(我说的是80%的置信度-需要检查自己的代码和后背部)。

And*_*ner 1

对于网状网络,您的想法是正确的。您遇到的问题是,跨对等连接传输 MediaStream 是一项昂贵的操作。在网状网络中,对于您建立的每个对等连接,您都在上传 MediaStream 和下载 MediaStream。您可以使用所有客户端都与之通信的中间服务器(而不是直接相互通信)来优化这一点。以下视频提供了有关其外观的更多信息:https ://vimeo.com/198382135