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

17
在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的实现中,可以通过将googAutoGainControl传递给getUserMedia()调用来配置WebRTC AGC。在FireFox上,我没有找到相应的功能。
我的问题是:作为WebRTC的终端用户,如何配置我的浏览器(Chrome或FireFox)以禁用AGC,因为AGC在我的设置上无法正常工作?

希望@jesup能看到这个问题并为FireFox提供答案 :) - Benjamin Trent
你在这方面有任何进展吗?由于这个问题,我已经停止使用Chrome了。 - Aaron J Spetner
很抱歉,我也还卡在同样的问题上。:( - Charl Botha
顺便说一句,这个问题可能不应该在SO上 - 我昨天实际上在SuperUser上发布了它。我找到了一个付费(不是超级昂贵)的解决方案:http://superuser.com/questions/847146/prevent-applications-from-changing-audio-input-gain/847327 - Aaron J Spetner
在https://tools.ietf.org/html/draft-ietf-rtcweb-audio-07中指定了音频级别,电话、通信Web客户端和麦克风录制等软件的自动增益控制(AGC)彼此非常不同。 - Altanai
如果客户端可以控制整个音频捕获路径,通常是普通电话的情况下,建议调整增益,使得活跃语音的级别为2600(-19 dBm0),适用于普通说话者。如果客户端无法控制整个音频捕获,通常是软件客户端的情况下,则应使用自动增益控制(AGC)来动态调整级别至2600(-19 dBm0)+/- 6 dB。对于音乐,不应自动调整级别,客户端应允许用户手动设置增益。 - Altanai
2个回答

6

googAutoGainControl作为MediaTrackConstraints是特定于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        
  });

目前,终端用户无法在浏览器中禁用此功能。高级用户可以在 Firefox 的 about:config 中编辑偏好设置,但在 Chrome 中不存在。


4

我相信在Firefox中AGC默认关闭,只是提供信息。 - jib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接