Установка частоты выборки в JavaScript navigator.mediaDevices.getUserMedia - PullRequest
0 голосов
/ 24 сентября 2018

Я сейчас пытаюсь установить частоту дискретизации внутри 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, он никогда не меняется.Каждый шарик всегда находится в диапазоне от 6000 до 7000.

1 Ответ

0 голосов
/ 07 октября 2018

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

...