有个项目使用Electron开发,内部含有一个使用WebRTC开发的语音通话功能,使用采购的麦克风出现声音很小的情况,排查了两天,发现原因是麦克风输出的立体声是相位相反的两个音轨,导致在单扬声器上播放时相互抵消了,所以就找方法看怎么能采集单声道音频。
最终在chrome://flags找到一个标志 enable-webrtc-apm-downmix-capture-audio-method ,当选择Enabled - Use first channel时,声音采集播放回复正常,接下来就是看怎么在Electron内设置这个标志。
根据Electron文档,可以使用app.commandLine.appendSwitch来设置启动参数。然后又找到了个整理chrome flags的网站https://nu11u5.github.io/chromium-flags/,在里面找到了这个参数。
点击后面的commit id,可以跳转到提交记录,很幸运,这个提交记录给出了设置的示例。
使用如下代码成功设置
app.commandLine.appendSwitch('enable-features', 'WebRtcApmDownmixCaptureAudioMethod:method/first');
应用启动后,麦克风工作正常。
看了看别的参数,里面的提交记录没有写怎么启用,只能去代码里面找了。