如何将 AudioBuffer 转换为 mp3 文件?

How to convert an AudioBuffer to a mp3 file?

有没有一种简单的方法可以做到这一点,或者我是否需要交错通道并创建一个包含特定 header 格式以及交错数据的 DataView

目前,这在网络平台上是不可能的。我们想要彻底改造解码和编码原语,以便它们既可以实时工作(比如今天的 MediaRecorder),也可以离线工作(比如,编码一个 OfflineAudioContext)。我们甚至还没有开始标准化,我们正在努力完成网络音频 API。

但是,多亏了 emscripten,无论如何都可以轻松做到,使用编译为 wasm 的 javascript 的 libmp3lame 版本,例如 https://github.com/higuma/mp3-lame-encoder-js

我建议从您的 AudioBuffer 获取 ArrayBuffers,使用 getChannelData(channelIndex),将其传输给网络工作者(无需复制,因此速度很快),然后 post 完成后将编码的 blob 返回到主线程。