WebRTCがオーディオをドロップする理由
私は音声が非常に重要なビデオ会議アプリを作っています。大きなハードルを乗り越えて(2週間半の作業から約2週間かかりました)、オーディオデバイスを切り替えましたが、2台のコンピューターでテストしてマイクを上げると、オーディオが静かになります。 。次に、マイク入力を上げました。これは、音量が下がる前にほぼ同じ時間機能しました。に設定autoGainControl
してみましたがfalse
、何も起こらなかったようです。これを行う簡単な方法はありますか?
私が試してみました:noiseSuppression: false
、(当然autoGainControl
)、 、echoCancellation: false
、channelCount: 2
、latency: 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コードについてはここをクリックしてください
どんなアイデアでも大歓迎です、ありがとう!
回答
まず、chrome://webrtc-internals
制約が期待どおりに正しく適用されていることを確認します。
次に、フィードバックの可能性を排除するために、それぞれにヘッドフォンのセットを使用します。これは問題を確認するのに役立ちます。これはどこかにエコーキャンセレーションアルゴリズムがあると思います。それが事実であることを確認したら...
、およびに設定echoCancellation
した場合でも、多くのデバイスには、フィードバックを削減するための独自の「拡張機能」があります。これがあなたが聞いていることだと思います。false
noiseSuppression
false
この場合、Web開発者としてそれについてできることは実際には何もありません。ブラウザとは別に、まったく別のレイヤーにあります。マイクを「通信」デバイスとして使用すると、LenovoのRealtekドライバーでこの問題がよく見られますが、他のコンピューターでも同じ問題が発生しています。