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

Posted

技术标签:

【中文标题】如何录制网络/浏览器音频输出(不是麦克风音频)【英文标题】:How to record web/browser audio output (not microphone audio) 【发布时间】:2019-04-15 10:15:44 【问题描述】:

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

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

【问题讨论】:

你可以在这里找到答案***.com/questions/42336604/… 【参考方案1】:

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

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

const mediaStreamDestination = audioContext.createMediaStreamDestination();

yourSourceNode.connect(mediaStreamDestination);

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

const mediaRecorder = new MediaRecorder(mediaStreamDestination.stream);

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

mediaREcorder.start();

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

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

【讨论】:

我试图以角度实现这一点。你能解释一下“someOtherNode”到底是什么吗? @NotABot someOtherNode 在这种情况下是音频的来源。我已在答案中更新了该节点的名称以澄清。 谢谢。如果我们不知道音频源,有什么方法可以录制音频?就我而言,我使用的是内部输出音频的 3rd 方 SDK。 @NotABot “在内部输出音频”具体是什么意思?哪个 SDK? 音频由我们的黑盒SDK播放。目前我正在考虑为此使用pulseaudio

以上是关于如何录制网络/浏览器音频输出(不是麦克风音频)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Windows Phone 的麦克风在网页中录制音频?

如何直接从浏览器录制音频

录制和播放从麦克风录制的音频流

如何使用麦克风以 AAC 编解码器格式录制音频

如何在 Delphi 中使用 TMediaPlayer 从麦克风输入中录制音频?

ios,在麦克风录制音频时获取浮动电平麦克风 updateMesters