如何录制网络/浏览器音频输出(不是麦克风音频)

时间:2019-04-15 10:15:44

标签: javascript reactjs audio mp3 web-audio-api

是否有人能够成功访问从浏览器窗口(而不是麦克风)输出的音频流?

我们目前正在构建一个录音棚应用程序,用户可以在其中演奏乐器,并且希望能够在生成音频时对其进行记录和保存。我们具有由本地保存的mp3文件(即按钢琴键)生成的实时音频输出,但是无法捕获此音频流序列进行保存。

1 个答案:

答案 0 :(得分:0)

我假设您正在为此项目使用Web Audio API。

首先,您需要创建一个MediaStreamAudioDestinationNode。这是一个Web Audio节点,您可以将图形的其余部分连接到该节点,并将其输出到可以记录的MediaStream。

const mediaStreamDestination = audioContext.createMediaStreamDestination();

someOtherNode.connect(mediaStreamDestination);

接下来,您需要一个MediaRecorder,它将在MediaStream产生原始PCM音频时将其获取,并使用所需的编解码器对其进行编码。

const mediaRecorder = new MediaRecorder(mediaStreamDestination.stream);

mediaRecorder.addEventListener('dataavailable', (e) => {
  // Recorded data is in `e.data`
});

mediaREcorder.start();

请注意,无论您的MediaStream是从getUserMedia还是从Web Audio API图获取,此MediaRecorder示例都是完全相同的。

此处的完整示例:https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode