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

Cha*_*tha 17 javascript firefox google-chrome webrtc getusermedia

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

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

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

似乎在Chrome的实现中,可以通过传递googAutoGainControlgetUserMedia()调用来配置WebRTC AGC .在FireFox上我找不到相应的东西.

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

Ale*_*das 6

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

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

Firefox现在不支持.

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

顺便说一下,您可以在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        
  });
Run Code Online (Sandbox Code Playgroud)

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