Запись аудио из браузера / веб-страницы с помощью API Web Audio - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь записать звук, который воспроизводится с текущей страницы в браузере. Это то, что я до сих пор:

const context = new AudioContext();
var dest = context.createMediaStreamDestination();
var mediaRecorder = new MediaRecorder(dest.stream);

var chunks = [];

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

mediaRecorder.onstop = function(e) {
  var blob = new Blob(chunks, { 'type' : 'audio/webm' });
  var fileReader = new FileReader();
  fileReader.onload = () => context.decodeAudioData(fileReader.result)
    .then(buf => {
      const source = context.createBufferSource();
      source.buffer = buf;
      source.connect(context.destination);
      source.start();
    });
  fileReader.readAsArrayBuffer(blob);
};

export function startRecord() {
  mediaRecorder.start();
}

export function stopRecord() {
  mediaRecorder.requestData();
  mediaRecorder.stop();
}

Мой первый вопрос: правильно ли я получаю поток? Как видите, я просто вызываю createMediaStreamDestination ();

Я на самом деле не уверен, правильно ли я декодирую блоб. Я обрабатываю его с помощью программы чтения файлов, и в функции .onload результат context.decodeAudioData (fileReader.result) не определен, когда я пытаюсь распечатать его. Почему buf не определен? Я даже правильно расшифровываю блоб?

...