10

我正在使用 webRTC 创建多用户视频聊天。但是我遇到了 RTCPeerConnection 的问题

在某些情况下,我与 7 个用户聊天,每个人都可以看到其他人的视频,但有时我会收到用户的黑屏。

奇怪的是它是完全随机的,有时一切正常。有时用户会出现黑屏。如果该用户重新登录,则其他屏幕会变黑或一切正常。

我已经检查了对等连接如何工作的流程,这是它对我的工作方式:

启动对等连接的用户:

  • kenneth:对等连接创建 main.js:275
  • kenneth:添加了远程流的侦听器 main.js:280
  • kenneth:侦听器远程流已删除添加 main.js:285
  • kenneth:本地流添加到 peerconnection main.js:264
  • kenneth:报价创建 main.js:293
  • kenneth: 报价发送 main.js:315
  • 肯尼斯:收到的答案 main.js:205
  • kenneth:添加了侦听器以发送本地 ICE 候选人 main.js:210
  • kenneth:从答案 main.js:215 设置的远程描述
  • kenneth:添加了远程流 main.js:366
  • kenneth:远程 ICE 收到 main.js:218
  • kenneth:远程 ICE 添加到 Peerconnection main.js:225
  • kenneth:远程 ICE 收到 main.js:218
  • kenneth:远程 ICE 添加到 Peerconnection main.js:225
  • kenneth:ICE 候选人发送 main.js:340
  • kenneth:ICE 候选人发送 main.js:340
  • kenneth:ICE 候选人发送 main.js:340
  • kenneth:ICE 候选人发送 main.js:340
  • kenneth:远程 ICE 收到 main.js:218
  • kenneth:远程 ICE 添加到 Peerconnection main.js:225
  • kenneth:远程 ICE 收到 main.js:218
  • kenneth:远程 ICE 添加到 Peerconnection main.js:225
  • kenneth:ICE 候选人发送 main.js:340
  • kenneth:ICE 候选人发送 main.js:340
  • 肯尼斯:候选人结束 main.js:342

收到报价然后创建答案的用户:

  • kennethtest1:收到的报价 main.js:183
  • kennethtest1:对等连接创建 main.js:275
  • kennethtest1:添加了远程流的侦听器 main.js:280
  • kennethtest1:侦听器远程流已删除添加 main.js:285
  • kennethtest1:添加了侦听器以发送本地 ICE 候选 main.js:189
  • kennethtest1:从offer main.js:194 设置的远程描述
  • kennethtest1:本地流添加到 peerconnection main.js:198
  • kennethtest1:答案已创建 main.js:301
  • kennethtest1:添加了远程流 main.js:366
  • kennethtest1:已发送答案 main.js:324
  • kennethtest1:ICE 候选发送 main.js:340
  • kennethtest1:ICE 候选发送 main.js:340
  • kennethtest1:ICE 候选发送 main.js:340
  • kennethtest1:ICE 候选发送 main.js:340
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225
  • kennethtest1:候选人结束 main.js:342
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225
  • kennethtest1:远程 ICE 收到 main.js:218
  • kennethtest1:远程 ICE 添加到 Peerconnection main.js:225

我还检查了 chrome://webrtc-internals/ 在那里我可以看到对于那个特定的黑屏对等连接,流在那里,但它没有通过它发送任何数据。

任何人都知道为什么有时流不在这里打开?

4

1 回答 1

1

通过添加多个 STUN 服务器而不是仅依赖一个来解决此问题。我已经看到,偶尔使用一个谷歌 STUN 服务器请求不会及时返回,这使得 webrtc 停止搜索通过媒体流发送的路径。

我添加了来自其他开源供应商的 STUN 服务器

于 2013-11-28T15:10:01.367 回答