Как я могу получить буферы / необработанные данные из AudioContext? - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь записывать и сохранять звуковые клипы с микрофона пользователя с помощью API GetUserMedia() и AudioContext.

Я смог сделать это с помощью MediaRecorder API, но, к сожалению, это не поддерживается Safari / iOS, поэтому я хотел бы сделать это только с помощью AudioContext API и буфера, который поставляетсяОт этого.

Я получил кое-что, что частично работает с в этом руководстве от Google Web основы , но я не могу понять, как сделать следующие шаги, которые они предлагают.

var handleSuccess = function(stream) {
    var context = new AudioContext();
    var source = context.createMediaStreamSource(stream);
    var processor = context.createScriptProcessor(1024, 1, 1);

    source.connect(processor);
    processor.connect(context.destination);

    processor.onaudioprocess = function(e) {
        // ******
        // TUTORIAL SUGGESTS: Do something with the data, i.e Convert this to WAV 
        // ******
        // I ASK: How can I get this data in a buffer and then convert it to WAV etc.??
        // *****
        console.log(e.inputBuffer);
    };
};

navigator.mediaDevices.getUserMedia({ audio: true, video: false })
    .then(handleSuccess);

Как сказано в руководстве:

Данные, которые хранятся в буферах, являются необработанными данными с микрофона, и у вас есть несколько вариантов того, что вы можете сделатьс данными:

  • Загрузить его прямо на сервер
  • Сохранить его локально
  • Преобразовать в выделенный формат файла, например WAV, и затем сохранить его вваши серверы или локально

Я мог бы сделать все это, но Я не могу понять, как получить аудио буфер, как только я остановил контекст .

С помощью MediaRecorder вы можете сделать что-то вроде этого:

mediaRecorder.ondataavailable = function(e) {
    chunks.push(e.data);
}

А затем, когда вы закончите запись, у вас будет буфер в chunks.Должен быть способ для этого, как предложено в руководстве, но я не могу найти data для вставки в буфер в первом примере кода.

Как только я получу аудио буфер, я смог преобразовать его в WAV и превратить в блоб и т. Д.

Кто-нибудь может мне помочь с этим?(Я не хочу использовать MediaRecorder API)

...