为什么WebRTC丢弃音频

问题描述

我正在制作一个视频会议应用程序,其中音频非常重要。我刚刚克服了一个主要的障碍(花了我2个半星期的时间,大约花了2个星期),切换了音频设备,但是现在当我要在2台计算机上对其进行测试并打开我的麦克风时,音频变得安静。然后,我打开了麦克风输入,在音量下降之前,它的工作时间大约相同。我什至尝试将autoGainControl设置为false,但这似乎无济于事。有没有简单的方法可以做到这一点?


我尝试过:noiseSuppression: false,(显然是autoGainControl),echoCancellation: falsechannelCount: 2latency: 0,但是所有这些都不起作用。这是getUserMedia的当前代码

                audio: {
                    echoCancellation: echoCancellationMASTER,noiseSuppression: noiseSuppressionMASTER,latency: 0,sampleRate: 48000,sampleSize: 24,autoGainControl: false
                    /*autoGainControl: false,channelCount: 2,volume: 3.0*/
                }

请注意,注释掉的代码是我也尝试过的代码,但当前未使用。

Click here for the github code

感谢任何想法,谢谢!

解决方法

首先,转到class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): def do_POST(self): data = self.rfile.readlines() 以确保您的约束按照您期望的方式正确应用。

接下来,在每个耳机上使用一组耳机以消除反馈的可能性。这将有助于确认问题,我怀疑这是某处的某些回声消除算法。一旦确认是这种情况...

即使您将chrome://webrtc-internals设置为echoCancellation,并且将false设置为noiseSuppression许多设备仍然具有自己的“增强”功能来进行反馈减少。我怀疑这就是您所听到的。

如果是这种情况,那么作为Web开发人员,您实际上无能为力。它位于与浏览器完全不同的一层。在将麦克风用作“通信”设备时,我经常会看到联想的Realtek驱动程序出现此问题,但在其他计算机上也有相同的问题。