Установка частоты дискретизации в JavaScript navigator.mediaDevices.getUserMedia
В настоящее время я пытаюсь установить частоту дискретизации внутри 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
на самом деле работает, потому что, когда я проверяю размер капли с разными sampleRate
ценности, это никогда не меняется. Каждый шарик всегда находится в диапазоне от 6000 до 7000.
1 ответ
Я узнал, что случилось. sampleRate
ограничение не поддерживается в Firefox с 6 октября 2018. Предполагается, что оно поддерживается в 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
Вверху вы увидите поддерживаемые аудио ограничения. Если вы введете ссылку на Firefox, вы увидите, что sampleRate
не указан там На Chrome он указан, но если вы введете {"sampleRate": 8000}
внутри поля ввода "Запрошенные ограничения звука" и нажмите "Применить ограничения", в поле "Фактические параметры звука" вы увидите, что частота дискретизации не изменяется.