WebRTC偶尔会出现黑屏

Ken*_*eth 8 javascript video webrtc

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

在某些情况下,我与7个用户聊天,每个人都看到其他人的视频,但有时我从用户得到黑屏.

奇怪的是它完全是随机的,有时一切都有效.有时用户有黑屏.如果该用户将重新登录,那么其他屏幕将变黑或一切都会起作用.

我已经检查了peerconnection如何工作的流程,以下是它对我的工作原理:

启动对等连接的用户:

  • kenneth:Peerconnection创建了main.js:275
  • kenneth:远程流的监听器添加了main.js:280
  • kenneth:侦听器远程流已删除添加了main.js:285
  • kenneth:本地流添加到peerconnection main.js:264
  • kenneth:Offer创建了main.js:293
  • kenneth:Offer Sent main.js:315
  • kenneth:回答收到了main.js:205
  • kenneth:听众添加了发送本地ICE候选人main.js:210
  • kenneth:来自answer 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
  • kenneth:候选人结束main.js:342

收到要约然后创建答案的用户:

  • kennethtest1:offer收到main.js:183
  • kennethtest1:Peerconnection创建了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 /我可以看到,对于那个特定的黑屏对等连接,流是在那里,但它没有通过它发送任何数据.

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

Ken*_*eth 1

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

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