如何录制 web/browser 音频输出(不是麦克风音频)

How to record web/browser audio output (not microphone audio)

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

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

我假设您正在为这个项目使用网络音频 API。

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

const mediaStreamDestination = audioContext.createMediaStreamDestination();

yourSourceNode.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