我目前正在进行webrtc项目,在不使用耳机或外部麦克风时出现音频回声问题,有什么办法可以解决这个吗
回声取消在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"
添加到本地视频元素,并将音量设置为0document.getElementById("localVideo").volume = 0
这不会阻止你的localStream发出声音,但它会消除你在本地产生的噪音。