我目前正在尝试设置navigator.mediaDevices.getUserMedia
内部的采样频率。下面是一个代码片段:
navigator.mediaDevices.getUserMedia({audio: {"sampleRate": {"exact": 8000}}, video: false}).then(handleSuccess).catch(e => console.log(e));
var handleSuccess = function(stream)
{
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start(1000); // the argument here is the duration of each audio chunk in milliseconds
mediaRecorder.addEventListener
("dataavailable", event =>
{
blob = event.data;
console.log(blob)
}
);
}
我不相信在getUserMedia
中设置sampleRate
实际上是可行的,因为当我用不同的sampleRate
值检查斑点大小时,它永远不会改变。每个斑点始终在6000到7000的范围内。
发布于 2018-10-07 08:29:38
我发现了哪里出了问题。从2018年10月6日起,火狐不支持sampleRate
约束。它应该在Chrome上支持,但它不起作用,我已经为Chromium:https://bugs.chromium.org/p/chromium/issues/detail?id=889851提交了一份错误报告
如果您需要亲自查看,Mozilla为支持的媒体约束做了一个非常好的演示:https://mdn.mozillademos.org/en-US/docs/Web/API/Media_Streams_API/Constraints$samples/Example_Constraint_exerciser?revision=1411870
您将在顶部看到支持的音频约束。如果你在火狐上输入这个链接,你会看到sampleRate
没有列在那里。在Chrome上,它会被列出,但如果你在“请求的音频约束”输入框中输入{"sampleRate": 8000}
并点击“应用约束”,你应该会在“实际音频设置”框中看到采样率不受影响。
https://stackoverflow.com/questions/52479944
复制相似问题