WebRTC иногда дает черный экран

Я создаю многопользовательский видеочат с помощью webRTC. Но я столкнулся с проблемой с RTCPeerConnection

в некоторых случаях у меня есть чаты с 7 пользователями, где каждый видит видео других народов но иногда я получаю черный экран от пользователя.

странно то, что это совершенно случайно, иногда все работает. иногда у пользователя черный экран. если бы этот пользователь повторно регистрировался, были бы другие экраны черными или все было бы работа.

Я проверил свой поток того, как работает peerconnection, и вот как это работает для меня:

пользователь, который запускает peerconnection:

  • kenneth: Peerconnection создан main.js: 275
  • kenneth: прослушиватель для удаленного потока добавлен main.js: 280
  • kenneth: удален удаленный поток прослушивателя добавлен main.js: 285
  • kenneth: локальный поток добавлен в peerconnection main.js: 264
  • Кеннет: предложение создан main.js: 293
  • Кеннет: предложение отправлено main.js: 315
  • kenneth: ответ получен main.js: 205
  • kenneth: слушатель добавлен для отправки местных кандидатов ICE main.js: 210
  • kenneth: удаленный набор описания из ответа main.js: 215
  • kenneth: удаленный поток добавлен main.js: 366
  • Кеннет: удаленный лед получил главный.js: 218
  • kenneth: удаленный лед добавлен к Peerconnection главный.js: 225
  • Кеннет: удаленный лед получил главный.js: 218
  • kenneth: удаленный лед добавлен в PeerConnection main.js: 225
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: удаленный лед получил главный.js: 218
  • kenneth: удаленный лед добавлен к Peerconnection главный.js: 225
  • Кеннет: удаленный лед получил главный.js: 218
  • kenneth: удаленный лед добавлен в PeerConnection main.js: 225
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: кандидат ICE отправлен main.в JS:340
  • Кеннет: конец основных кандидатов.js: 342

пользователь, который получает предложение, а затем создает ответ:

  • kennethtest1: предложение получено главный.js: 183
  • kennethtest1: Peerconnection создан main.js: 275
  • kennethtest1: прослушиватель для удаленного потока добавлен main.js: 280
  • kennethtest1: удален удаленный поток прослушивателя добавлен main.js: 285
  • kennethtest1: добавлен слушатель для отправки местных кандидатов ICE main.js: 189
  • kennethtest1: удаленный набор описания от предложения main.js: 194
  • kennethtest1: локальный поток добавлен в peerconnection главный.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: удаленный лед получен главный.js: 218
  • kennethtest1: удаленный лед добавлен в PeerConnection main.js: 225
  • kennethtest1: удаленный лед получил главный.js: 218
  • kennethtest1: удаленный лед добавлен в PeerConnection main.js: 225
  • kennethtest1: удаленный лед получил главный.js: 218
  • kennethtest1: удаленный лед добавлен в PeerConnection main.js: 225
  • kennethtest1: удаленный лед получил главный.js: 218
  • kennethtest1: удаленный лед добавлен к Peerconnection main.js: 225
  • kennethtest1: конец основных кандидатов.js: 342
  • kennethtest1: удаленный лед получил главный.js: 218
  • kennethtest1: удаленный лед добавлен в PeerConnection main.js: 225
  • kennethtest1: удаленный лед получил главный.js: 218
  • kennethtest1: удаленный лед добавлен в PeerConnection main.js: 225

Я также проверил chrome: / / webrtc-internals/ где я могу видеть, что для этого конкретного черного экран peerconnection поток есть но он не передает никаких данных через него.

У кого-нибудь есть идея, почему иногда поток не открывается здесь?

1 ответов


исправлено это путем добавления нескольких серверов оглушения вместо того, чтобы полагаться только на один. Я видел, что с использованием одного сервера Google STUN иногда запросы не возвращаются вовремя, что заставляет webrtc прекратить поиск пути для отправки через медиа-потоки.

Я добавил серверы оглушения от других поставщиков с открытым исходным кодом