Почему WebRTC удаляет аудио

#node.js #audio #webrtc #getusermedia

#node.js #Аудио #webrtc #getusermedia

Вопрос:

Я создаю приложение для видеоконференций, где звук очень важен. Я только что преодолел серьезное препятствие (у меня ушло около 2 недель из 2 с половиной недель работы над ним), переключая аудиоустройства, но теперь, когда я иду тестировать его на 2 компьютерах и включаю микрофон, звук становится тихим. Затем я включил микрофонный вход, который работал примерно столько же времени, прежде чем громкость упала. Я даже пытался установить autoGainControl на false , но, похоже, это ничего не дало. Есть ли простой способ сделать это?


Я пробовал: noiseSuppression: false , (очевидно autoGainControl ), echoCancellation: false , channelCount: 2 latency: 0 , и все это не сработало. Вот текущий код для getUserMedia :

                 audio: {
                    echoCancellation: echoCancellationMASTER,
                    noiseSuppression: noiseSuppressionMASTER,
                    latency: 0,
                    sampleRate: 48000,
                    sampleSize: 24,
                    autoGainControl: false
                    /*autoGainControl: false,
                    channelCount: 2,
                    latency: 0,
                    volume: 3.0*/
                }
  

Обратите внимание, что закомментированный код — это то, что я также пробовал, но в настоящее время не использую.

Нажмите здесь, чтобы посмотреть код на github

Любые идеи приветствуются, спасибо!!

Ответ №1:

Во-первых, перейдите к chrome://webrtc-internals , чтобы убедиться, что ваши ограничения применяются правильно, так, как вы ожидаете, что они будут.

Далее, используйте комплект наушников на каждом, чтобы исключить возможность обратной связи. Это поможет подтвердить проблему, которая, как я подозреваю, является каким-то алгоритмом подавления эха где-то. Как только вы подтвердите, что это так…

Даже если вы установили echoCancellation на false и noiseSuppression на false , многие устройства по-прежнему имеют свои собственные «улучшения» для уменьшения обратной связи. Я подозреваю, что это то, что вы слышите.

Если это так, то вы действительно ничего не можете с этим поделать как веб-разработчик. Это на совершенно другом уровне, отличном от браузера. Я часто сталкиваюсь с этой проблемой с драйверами Lenovo Realtek при использовании микрофона в качестве «коммуникационного» устройства, но у меня была такая же проблема на других компьютерах.

Комментарии:

1. Я пользуюсь наушниками, и у меня не было никаких проблем с обратной связью. Тем не менее, я использую Lenovo на Windows с внешним микрофоном ( hypemic ), вы думаете, что проблема в драйвере / внешнем микрофоне? Большое спасибо за вашу помощь!

2. @divinelemon О, учитывая список функций этого микрофона, я бы определенно проверил, что он делает с вашими уровнями. Переключите микрофоны и посмотрите, что произойдет.

3. Я переключил микрофоны (на мой микрофон по умолчанию), и микрофон по умолчанию очень громкий и не пропускает звук. Может быть, это что-то с hypemic?

4. @divinelemon Да.

5. На самом деле я тестировал это с другим микрофоном, который подключается к блоку, называемому Focusrite, который очень громкий и использует ручной потенциометр для регулировки звука, но звук по-прежнему падает в объеме, когда кто-то присоединяется. У меня также есть децибелометр на сайте, который отображает входную громкость микрофона, и когда я играю на нем без кого-либо на сайте, счетчик почти на полную, но когда кто-то присоединяется к собранию, счетчик опускается ниже половины отметки, а я даже ни к чему не прикасаюсь, что наводит меня на мысль, что это как-то связано с WebRTC. Есть идеи?