Многосторонний звук в WebRTC на iOS/Android искажается

Я пытаюсь выяснить, как лучше всего сделать следующее: имея одноранговое соединение между сторонами A и B, я хочу добавить третью сторону C, но сложность в том, что мне не нужна полная конфигурация сетки, B должен связываться с C только через A (настройка MCU, где A — MCU).

B <-> A <-> C

До сих пор я пробовал следующее: когда создается peerConnectionAC и вызывается обратный вызов didAddStream, я добавляю peerConnectionAB.remoteStream в качестве локального потока в peerConnectionAC, например так:

peerConnectionAC.addStream(remoteStreamAB)

Тогда я делаю это наоборот:

peerConnectionAB.addStream(remoteStreamAC)

В этот момент WebRTC запускает обратный вызов для повторного согласования, поэтому новое предложение создается и отправляется соответствующим сторонам.

Звук теперь течет между B и C через A, но он ужасно искажен, почти неразборчив. Звук, поступающий от микрофона A к B и C, по-прежнему чистый.

Оба одноранговых соединения используют один и тот же кодек (OPUS, но пробовали и с iLBC) и одинаковую частоту дискретизации.

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

Кажется, это легко сделать в настройках браузера, но мне нужно, чтобы это работало на iOS/ Android как отдельное приложение.

Может ли кто-нибудь дать мне идею или указатель на то, как исправить искаженный звук?


person clawoo    schedule 23.06.2017    source источник
comment
Вам нужно предоставить дополнительную информацию, например: Вы общаетесь через WIFI или 3G/4G? Используете ли вы серверы STUN или TURN? Не могли бы вы опубликовать статистику WebRTC между A-C, A-B и C-B (через A)?   -  person AlexTa    schedule 30.06.2017
comment
Для простоты предположим, что все три устройства подключены к одному и тому же Wi-Fi с отличным подключением.   -  person clawoo    schedule 03.07.2017