可以使用 JavaScript 记录浏览器音频元素的播放吗?
Posted
技术标签:
【中文标题】可以使用 JavaScript 记录浏览器音频元素的播放吗?【英文标题】:Possibility to record playback of browser audio element using JavaScript? 【发布时间】:2021-04-15 21:21:07 【问题描述】:我目前正在开发一个简单的音频项目,它使用 html / JS 音频元素通过按钮播放音频。
是否可以录制正在播放的音频而不是录制麦克风(通过使用 MediaRecorder API)?
【问题讨论】:
这可以通过 Web 音频 API 实现,而不是音频元素。首先,您将通过音频上下文 convert the audio to an AudioBuffer,然后是 set that buffer on a BufferSource,其中 connects to a MediaStreamDestination,然后您可以最终将其传递给 MediaRecorder。然后,您可以通过 BufferSource 控制音频,而不是 HTML/JS 元素。 好的,我会调查的,谢谢。是否也可以使用多个流并一起录制? 【参考方案1】:按照lawrence-witt提供的步骤,我想通了。这里是每个试图实现相同目标的示例:
const audioContext = new AudioContext();
const destination = audioContext.createMediaStreamDestination();
const mediaRecorder = new MediaRecorder(destination.stream);
// array of 'new Audio()' elements
audioArray.forEach(audio =>
let stream = audioContext.createMediaStreamSource(audio.captureStream());
stream.connect(destination);
)
mediaRecorder.start();
【讨论】:
以上是关于可以使用 JavaScript 记录浏览器音频元素的播放吗?的主要内容,如果未能解决你的问题,请参考以下文章
Android 浏览器在每次 play() 后卸载 HTML5 音频元素,导致延迟
仅使用 javascript 和 html 以具有跨浏览器功能的 html 音频录制