如何在Web环境Web应用程序(如Google Hangouts或OpenTokRTC)中禁用自动增益控制(AGC)

时间:2014-10-21 10:58:31

标签: javascript google-chrome firefox webrtc getusermedia

在WebRTC之前的googletalkplugin时代,可以通过将audio-flags: 1添加到配置文件来禁用AGC(麦克风的自动增益控制)。但是,由于Google Hangouts现在使用WebRTC,所以经常会发生这样的情况:当我与某人聊天时,我的麦克风级别会一直向下拍摄,以至于我在另一方面或多或少地保持沉默。我也有通讯员,他的麦克风音量一直在增加,反复。

我在使用WebRTC的http://opentokrtc.com/上重现了这种行为。通过在我的麦克风中发出响亮的砰砰声,我可以通过几个步骤让关卡完全降低。我可以在Chrome 38和FireFox 34 beta上做到这一点。

但是,当我在我的Ubuntu 14.04.1计算机上使用本地应用程序(例如Audacity)时,我能够通过发出响亮的砰砰声来影响麦克风级别。换句话说,看起来WebRTC真的是罪魁祸首。

似乎在Chrome的实施中,可以通过将googAutoGainControl传递给getUserMedia()来配置WebRTC AGC。在FireFox上,我找不到相应的东西。

我的问题是:作为WebRTC 最终用户,如何配置我的浏览器(Chrome或FireFox)以禁用AGC,因为AGC在我的设置上无法正常工作?

2 个答案:

答案 0 :(得分:6)

作为MediaTrackConstraints的googAutoGainControl特定于Chrome(WebKit)。

WebRTC工作组章程仍在编写标准,他们将在2015年6月30日完成。

Firefox现在不支持。

注意:建议不要使用AGC将任何特定于浏览器的约束指定为必需,因为在不支持约束的浏览器中调用将失败。而是将约束指定为可选。您的浏览器将尽最大努力满足尽可能多的可选约束。

BTW你可以在Firefox中使用GainNode界面: https://developer.mozilla.org/en-US/docs/Web/API/GainNode

禁用googAutoGainControl

的示例
  var webrtc = new SimpleWebRTC({
    localVideoEl: 'localVideo',
    remoteVideosEl: '',
    autoRequestMedia: true,
    //detectSpeakingEvents: true,
    adjustPeerVolume: false,
    peerVolumeWhenSpeaking: 1,  
    media: {
      audio: {
        optional: [
          //{sourceId: audio_source},
          {googAutoGainControl: false}, 
          {googAutoGainControl2: false}, 
          {googEchoCancellation: false},
          {googEchoCancellation2: false},
          {googNoiseSuppression: false},
          {googNoiseSuppression2: false},
          {googHighpassFilter: false},
          {googTypingNoiseDetection: false},
          {googAudioMirroring: false}
        ]
     },
     video: {
        optional: [
          //{sourceId: video_source}
        ]
      }
    }
    //autoAdjustMic: false        
  });

最终用户目前无法在浏览器中禁用此功能。 高级用户可以在Firefox中的about:config中编辑首选项,但Chrome中不存在。

答案 1 :(得分:4)

看起来FireFox在46中增加了一些支持:  https://wiki.mozilla.org/Media/WebRTC/ReleaseNotes/46

  

实现了echoCancellation,mozAutoGainControl和mozNoiseSuppression gUM约束。 (见错误987186。)