html5 – WebRTC – 禁用所有音频处理

我正在尝试通过webrtc获得一个干净的音频通道.通过getUserMedia mediaconstraints对象,我设置了以下选项:
constraints: {
        audio: {
            mandatory: {
                echoCancellation: false,googEchoCancellation: false,googAutoGainControl: false,googAutoGainControl2: false,googNoiseSuppression: false,googHighpassFilter: false,googTypingNoiseDetection: false,//googAudioMirroring: false // For some reason setting googAudioMirroring causes a navigator.getUserMedia error:  NavigatorUserMediaError
            }
        },video: false
    },

这大大提高了音频质量,但是似乎存在音频处理,这导致了一些测试样本以高频噪声的形式破坏音频.

一个Chrome标志 – 用于假冒音频捕获的文件 – 如http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture所述,允许通过文件输入进行测试.如在标志的描述中所提及的,所有音频处理都必须被禁用或音频将被扭曲 – 所以似乎有其他选项用于此目的.

我也尝试过–disable-audio-track-processing -audio-buffer-size = 16-enable-exclusive-audio Chrome标志,但仍然有一些音频处理.

是否有任何方法来禁用仍然存在的音频处理(最好通过JS API)?

解决方法

我会赌注opus编解码器的可变比特率(认)行为导致一些压缩或调整.您可以手动操纵SDP报价以使用CBR(恒定比特率)而不是VBR(可变比特率).当您从浏览器获取SDP报价时,请更改行:
a=fmtp:111 minptime=10; useinbandfec=1

至:

a=fmtp:111 minptime=10; cbr=1

请注意,我同时添加cbr = 1并删除useinbandfec = 1.我不太乐意放弃useinbandfec是必要的,但是似乎带内FEC(转发错误纠正)会导致您想要避免的压缩调整.

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码