Реализация WebRTC для Android не работает, когда одно из устройств подключено к WiFi

Я разработал приложение для потоковой передачи видео, которое передает видео с одного устройства Android на другое (а не наоборот). Когда оба устройства находятся в своей отдельной сети LTE, приложение работает нормально. Но когда одно из устройств подключено к WiFi, приложение не выполняет рукопожатие (обмен предложением и ответом) и показывает это в журналах.

D/null localPeerCreation:
onIceConnectionChange() called with:
iceConnectionState = [CLOSED]

(в некоторых случаях вместо CLOSED стоит FAILED)

Я не знаю, почему так происходит, что в случае отдельного LTE работает, а с WIFI - нет. Я пытался отладить эту проблему в течение довольно долгого времени, но я не могу ни на что указать, потому что также очень мало ссылок на реализацию WebRTC для Android. Пожалуйста помоги.

Редактировать: я начал отправлять кандидатов Ice до того, как Xirsys ответил кандидатами, поэтому сервер TURN никогда не использовался. Поэтому я изменил свое приложение таким образом, что любое рукопожатие будет происходить только после того, как кандидаты будут получены от Xirsys. Я знаю, это было довольно глупо.


person CanniZarro    schedule 21.03.2020    source источник


Ответы (1)


Я не знаком с серверами Xirsys TURN, но это может не охватывать все случаи, когда необходимо подключить LTE к обоим клиентам.

Я бы проверил следующее.

  • Какие типы транспорта поддерживаются (UDP, TCP и TLS)
  • Генерирует ли сервер TURN прослушиватели для IPv4 и IPv6?
  • Как выглядит сеть на обоих устройствах (IPv4/IPv6, за NAT?)

Если вы можете поделиться кандидатами с обеих сторон и вашей конфигурацией RTC, это очень поможет. Обязательно анонимизируйте свои URL-адреса и IP-адреса!

person Sean DuBois    schedule 21.03.2020
comment
Я отправлял ответ до того, как серверы очереди ответили мне кандидатами на Ice, в этом была проблема. Это было глупо :(. Но спасибо @Sean - person CanniZarro; 22.03.2020