我想以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未捕获的TypeError:无法执行 ' webkitGetUserMedia' on' Navigator&#39 ;:提供的价值既不是 数组,也没有索引属性。
如何在JavaScript中实时录制16khz的音频?
答案 0 :(得分:3)
几个问题:
optional
(现在advanced
)接受一个数组,例如optional: [{ sampleRate: 16000 }]
sampleRate
尚未在任何浏览器AFAIK中实现。所以它不会起作用,至少现在还没有。将来,请使用spec syntax:
navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: {exact: false},
sampleRate: 16000,
}
})
.then(gotStream)
.catch(e => console.log(e));