【问题标题】:How to convert an AudioBuffer to a mp3 file?如何将 AudioBuffer 转换为 mp3 文件?
【发布时间】:2017-09-16 00:16:06
【问题描述】:

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

【问题讨论】:

  • 是否需要专门创建.mp3 文件?

标签: javascript web-audio-api audio-processing audiobuffer


【解决方案1】:

目前,这在网络平台上是不可能的。我们想要彻底检查解码和编码原语,使它们既可以实时工作(比如今天的MediaRecorder),也可以离线工作(比如编码OfflineAudioContext)。我们甚至还没有开始对其进行标准化,我们正在努力完善 Web Audio API。

不过,多亏了 emscripten,无论如何,使用编译为 wasm 的 javascript 的 libmp3lame 版本,例如 https://github.com/higuma/mp3-lame-encoder-js,都非常容易。

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

【讨论】:

  • 我在 Github 上试过那个项目,速度很慢,尤其是在移动设备上。您可能会认为,如果您在音频上下文上有一个 decode 方法,那么就有一个 encode 方法是很自然的。
  • 我看过关于lamejs的好报道。它是一个用 Javascript 编写的 MP3 编码器(所以没有 wasm 导致它因为虚拟内存问题而中止):github.com/zhuker/lamejs
猜你喜欢
  • 2017-09-28
  • 2018-11-03
  • 2016-03-23
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多