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 прекратить поиск пути для отправки через медиа-потоки.
Я добавил серверы оглушения от других поставщиков с открытым исходным кодом