如何在 JavaScript getusermedia 中设置此参数?

How can I set this parameter in JavaScript getusermedia?

我想以 16khz 的采样率实时录制 JavaScript 中的音频。我有以下代码:

navigator.getUserMedia(
    {
        "audio": {
            "mandatory": {
                "googEchoCancellation": "false",
                "googAutoGainControl": "false",
                "googNoiseSuppression": "false",
                "googHighpassFilter": "false"
            },
            "optional": {
                "sampleRate": 16000 
            }
        },
    }, gotStream, function(e) {
        console.log(e);
    });

但这会引发错误:

index.html:1026 Uncaught TypeError: Failed to execute 'webkitGetUserMedia' on 'Navigator': The value provided is neither an array, nor does it have indexed properties.

如何在 JavaScript 中实时录制 16khz 的音频?

几个问题:

  1. optional(现在是 advanced)接受一个数组,例如optional: [{ sampleRate: 16000 }]
  2. 此约束语法已过时,仅适用于 Chrome。
  3. sampleRate 尚未在任何浏览器 AFAIK 中实现。

所以它不会起作用,至少现在不会。以后使用spec syntax:

navigator.mediaDevices.getUserMedia({
  audio: {
    echoCancellation: {exact: false},
    sampleRate: 16000,
  }
})
.then(gotStream)
.catch(e => console.log(e));