使用Web Audio API记录来自浏览器/网页的音频

时间:2018-08-26 00:07:04

标签: javascript web-audio mediarecorder web-audio-api

我正在尝试在浏览器中记录从当前页面播放的音频。这是我到目前为止的内容:

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();

我实际上不确定是否正确解码了Blob。我正在使用filereader处理它,并且在.onload函数中,当我尝试将其打印出来时,context.decodeAudioData(fileReader.result)的结果是不确定的。为什么buf未定义?我什至可以正确解码Blob吗?

0 个答案:

没有答案