В настоящее время я работаю над проектом webrtc, и у меня проблема со звуковым эхом, когда я не использую наушники или внешний микрофон, есть ли обходной путь или решение для этого?
Отмена акустического эха WebRTC
Ответы (3)
Подавление эха должно быть включено по умолчанию в WebRTC. Вы можете отключить его, чтобы услышать разницу:
navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: false } })
.then(stream => audio.srcObject = stream)
.catch(e => log(e));
var log = msg => div.innerHTML += msg + "<br>";
<audio id="audio" controls autoplay></audio><br>
<div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
Технология эхоподавления может существовать на многих уровнях — программное обеспечение в браузере, в ОС, а иногда даже в аппаратном микрофоне — иногда эти технологии могут мешать друг другу.
Не зная вашей системы, я бы порекомендовал проверить настройки звуков вашей системы, чтобы убедиться, что у вас не происходит полезной обработки на слишком многих уровнях.
Например, в OSX есть функция использовать шумоподавление в разделе Настройки звука, которая, как мне кажется, лучше работает с WebRTC, когда я отключаю. эм>сильный>. Вы хотите, чтобы только один шеф-повар одновременно пытался подавить эхо.
Если вы работаете над веб-сайтом для других клиентов, то вы мало что можете сделать в программном обеспечении, и я ожидаю, что большинство систем будут работать если не идеально, то прилично, хотя гарнитура всегда будет лучше.
В настоящее время нет лучшего решения для эхоподавления в webrtc, поэтому лучшим решением, которое я нашел, является использование программного обеспечения AEC или встроенного программного обеспечения для эхоподавления.
У меня была такая же проблема даже с ограничением видео echoCancellation.
Наконец-то я смог удалить эхо/шум, добавив свойство muted="true"
к вашему видеоэлементу local и установить громкость на 0 document.getElementById("localVideo").volume = 0
Это не помешает вашему локальному потоку иметь звук, но отменит шум, который у вас есть локально.
getUserMedia
API. Даже одноранговые соединения не зависят от данных и имеют дело конкретно с аудио и видео. - person jib   schedule 23.05.2016