我目前正在开展webrtc项目,并且在不使用耳机或外接麦克风时出现音频回声问题,是否有任何解决方法或修复此问题
答案 0 :(得分:3)
WebRTC默认启用回声消除功能。您可以将其关闭以听取差异:
navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: false } })
.then(stream => audio.srcObject = stream)
.catch(e => log(e));
var log = msg => div.innerHTML += msg + "<br>";
&#13;
<audio id="audio" controls autoplay></audio><br>
<div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
&#13;
回声消除技术可以存在于多个层面 - 浏览器,操作系统中的软件,有时甚至是硬件麦克风中的软件 - 有时这些技术会相互干扰。
不了解您的系统,我建议您查看系统的声音设置,以确保您没有太多级别的有用处理。
例如,在OSX上,声音设置下的使用环境降噪功能,当我转向时,对于使用WebRTC的人来说,这对我来说非常有效关 即可。您只希望一位厨师同时尝试回音消除。
如果您正在为其他客户开发网站,那么您在软件方面所做的并不多,而且我希望大多数系统能够正常工作,如果不是很完美,那么虽然耳机总会如此更好。
答案 1 :(得分:1)
目前在webrtc中没有最佳的回声消除解决方案,因此我找到的最佳解决方案是使用AEC软件,或内置回声消除软件
答案 2 :(得分:0)
即使有视频 echoCancellation 约束,我也遇到了同样的麻烦
我终于可以删除将属性muted="true"
添加到您的 local 视频元素中的回声/噪音,并将音量设置为0 document.getElementById("localVideo").volume = 0
这不会阻止您的localStream发出声音,但会消除您在本地产生的噪音。