在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在我的设置上无法正常工作?
答案 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。)