如何使用Java将音频流转换为MP3?

如何使用Java将音频流转换为MP3?,java,mp3,capture,encode,recording,Java,Mp3,Capture,Encode,Recording,是否可以使用Java将混音器中的实时音频流转换为MP3 它必须逐块转换,否则内存将耗尽 我已经知道如何录制,但仅限于wav和aiff等无损格式 当音频输入时,我需要转换 可能是您可以使用的,它是一个100%的Java API,包装了标准的LAME API(LAME是一个MP3编码器) 但我不确定它是否会“逐块”编码……至于第一个问题,是否可能,我能看到的唯一限制是处理器速度。如果你正在使用的算法和你的处理器都足够快,没有理由不可能 我知道这不是Java源代码,但它可能会让您走上正确的道路-请尝

是否可以使用Java将混音器中的实时音频流转换为MP3

  • 它必须逐块转换,否则内存将耗尽
  • 我已经知道如何录制,但仅限于wav和aiff等无损格式
  • 当音频输入时,我需要转换
    • 可能是您可以使用的,它是一个100%的Java API,包装了标准的LAME API(LAME是一个MP3编码器)


      但我不确定它是否会“逐块”编码……至于第一个问题,是否可能,我能看到的唯一限制是处理器速度。如果你正在使用的算法和你的处理器都足够快,没有理由不可能

      我知道这不是Java源代码,但它可能会让您走上正确的道路-请尝试查看


      据我所知,所有MP3转换算法都是逐块工作的。他们不需要阅读整个WAV文件就可以开始转换,但他们可以在转换过程中进行转换。

      Lame确实是MP3编码的事实标准,部分原因是它的高质量(MP3编码很难做到正确……而且是一门主观艺术),部分原因是法律问题(MP3是一项专利技术,AFAIK,这就是为什么你从数量有限的网站上获得蹩脚的二进制文件,其中大多数是在这些法律问题较少(或没有)实施的国家)


      VonC发现的LAMEOnJ项目似乎使用了一个非免费的JNI实现,但我认为您可以使用JNI甚至JNA进行自己的绑定,特别是如果您针对的是一个精确的系统。

      用Java创建一个新的进程,并将流写入的stdin中,然后使用一个工具,让它动态地将音频数据转换为MP3。

      尝试使用Ring buffer对fly中的原始音频缓冲区进行编码。

      使用Xugler来完成。它是免费的、开源的(LGPL),并在封面下使用libmp3lame。Xugler中给出了许多如何使用它的示例:

      它不是纯100%Java。