WebRTCがオーディオをドロップする理由

Aug 22 2020

私は音声が非常に重要なビデオ会議アプリを作っています。大きなハードルを乗り越えて(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,
                    latency: 0,
                    volume: 3.0*/
                }

コメントアウトされたコードは私も試したものですが、現在は使用していないことに注意してください。

githubコードについてはここをクリックしてください

どんなアイデアでも大歓迎です、ありがとう!

回答

1 Brad Aug 23 2020 at 03:32

まず、chrome://webrtc-internals制約が期待どおりに正しく適用されていることを確認します。

次に、フィードバックの可能性を排除するために、それぞれにヘッドフォンのセットを使用します。これは問題を確認するのに役立ちます。これはどこかにエコーキャンセレーションアルゴリズムがあると思います。それが事実であることを確認したら...

、およびに設定echoCancellationした場合でも、多くのデバイスには、フィードバックを削減するための独自の「拡張機能」があります。これがあなたが聞いていることだと思います。falsenoiseSuppressionfalse

この場合、Web開発者としてそれについてできることは実際には何もありません。ブラウザとは別に、まったく別のレイヤーにあります。マイクを「通信」デバイスとして使用すると、LenovoのRealtekドライバーでこの問題がよく見られますが、他のコンピューターでも同じ問題が発生しています。