Установка частоты дискретизации в 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} внутри поля ввода "Запрошенные ограничения звука" и нажмите "Применить ограничения", в поле "Фактические параметры звука" вы увидите, что частота дискретизации не изменяется.

Другие вопросы по тегам