【问题标题】:How to avoid echo and noise in javascript for webrtc如何在 webrtc 的 javascript 中避免回声和噪音
【发布时间】:2013-08-26 16:53:12
【问题描述】:

我正在尝试实现一个基于 webrtc 的聊天室。我在笔记本电脑中遇到了以下问题。无需连接任何其他对等方,只需使用 getUserMedia(),即可获取本地视频流。

当我取消 <video> 静音时,回声发生了。

然后我戴上耳机,发现有持续的噪音。而且我可以清楚地听到我的声音。

我试着调低音量,但没用。

提前致谢。

【问题讨论】:

  • 如果@tom-vLine 的回答解决了您的问题,请标记为回答

标签: audio video chat webrtc


【解决方案1】:

如果您在 DOM 中有 local <video> 元素,请确保将其静音:

<video id="vid1" autoplay="true" muted="muted"></video>

有关详细信息,请参阅讨论 webrtc 邮件列表上的 this postWebRTC samples

【讨论】:

  • 如果你把它静音,它不会捕捉到任何声音,对吗?
  • 即使本地播放元素被静音,流仍然会捕获声音。使 DOM 中的元素静音只会使本地播放静音。要使传出的音频流本身静音,您需要执行 localMediaStream.getAudioStreams()[0].enabled = false 或 localMediaStream.getVideoStreams()[0].enabled = false 以保持声音继续播放但禁用视频流。这假设您将媒体流保存在 onaddstream() 回调中的某个位置。
  • 有没有办法在不丢失声音的情况下消除回声?
  • @DNM,你不会因为这个静音而失去声音。
  • 谢谢.. 这个答案救了我。
【解决方案2】:

要解决与噪音相关的问题,您应该为 localstream 设置 autoplay=false。

【讨论】:

  • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
  • autoplay=false 只是不允许视频自动播放。它与音频没有任何关系。
【解决方案3】:

执行以下操作:

1) 在 localVideo 中执行以下操作:

localVideo.volume = 0;

localVideo.muted = 0;

2) 对 remoteVideo 也这样做:

remoteVideo.volume = 0;

remoteVideo.muted = 0;

【讨论】:

  • muted 属性没有帮助,可能是因为我使用了 Angular 4。但这完美无缺document.getElementById('yourVideo').volume = 0
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 2016-01-12
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多