1

我目前正在尝试在内部设置采样频率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)
        }
    );
}

我不相信设置sampleRate实际上getUserMedia有效,因为当我检查具有不同值的 blob 大小时sampleRate,它永远不会改变。每个 blob 始终在 6000 到 7000 的范围内。

4

1 回答 1

1

我发现出了什么问题。截至 2018 年 10 月 6 日,Firefox 不支持该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?修订=1411870

您将在顶部看到支持的音频约束。如果您在 Firefox 上输入该链接,您将看到该链接sampleRate未在此处列出。在 Chrome 上,它已列出,但如果您{"sampleRate": 8000}在“请求的音频约束”输入框中输入并单击“应用约束”,您应该会在“实际音频设置”框中看到采样率不受影响。

于 2018-10-07T00:29:37.890 回答