提问人:wanderingcode 提问时间:11/16/2023 更新时间:11/16/2023 访问量:19
如何在 getUserMedia 上设置谷歌实验音频媒体约束
How to set google experimental audio media constraints on getUserMedia
问:
使用 Google Meet 时,需要设置几个未发布的音频限制。查看 webrtc-internals 显示音频约束如下:
{deviceId: {exact: ["default"]}, advanced: [{googEchoCancellation: {exact: true}}, {googExperimentalEchoCancellation: {exact: true}}, {autoGainControl: {exact: true}}, {noiseSuppression: {exact: true}}, {googHighpassFilter: {exact: true}}, {googAudioMirroring: {exact: true}}]}
我目前在使用 Google Meet 时遇到了 Chrome 中的标准回声消除问题。因此,我想运行一些启用 googEchoCancellation 和 googExperimentalEchoCancellation 的测试,但是当我在 getUserMedia 中设置这些约束时,它们不会被应用。相反,查看 webrtc-internals 显示我的约束如下:
{deviceId: {exact: ["default"]}, advanced: [{}, {}, {autoGainControl: {exact: true}}, {noiseSuppression: {exact: true}}, {}, {}]}
当我尝试设置 goog* 特定约束时,Chrome 会忽略它们,但 Meet 能够设置它们。
我可以看到这些限制存在于 Chrome 的源代码中: https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/mediastream/media_constraints.cc
但是我不知道如何设置它们。
所以我的问题是 Google Meet 如何设置这些额外的音频限制?
我尝试将getUserMedia中的约束设置为:
let gum = await navigator.mediaDevices.getUserMedia({deviceId: {exact: ["default"]}, advanced: [{googEchoCancellation: {exact: true}}, {googExperimentalEchoCancellation: {exact: true}}, {autoGainControl: {exact: true}}, {noiseSuppression: {exact: true}}, {googHighpassFilter: {exact: true}}, {googAudioMirroring: {exact: true}}]})
我还尝试将它们直接应用于音轨:
let tracks = await gum.getAudioTracks() await tracks[0].applyConstraints({advanced: [{googEchoCancellation: {exact: true}}, {googExperimentalEchoCancellation: {exact: true}}, {autoGainControl: {exact: true}}, {noiseSuppression: {exact: true}}, {googHighpassFilter: {exact: true}}, {googAudioMirroring: {exact: true}}]})
这两种方法都没有设置 googEchoCancellation 或 googExperimentalEchoCancellation。
答: 暂无答案
评论