我需要一个 Java 中的 OpenSource API,它可以将 *.wav 和 *.au 格式编码为 MP3,反之亦然。
我已经评估了 Java Sound API 和LameOnJ,但它们分别不符合我的要求并且不稳定。请推荐一个免费且独立于平台的。
您可能还没有足够的答案,因为 MP3 格式要求解码器/编码器的作者从弗劳恩霍夫研究所获得许可。
我认为 LAME 库是从一个不尊重这些 IP 问题的国家分发的,但要做到这一点需要大量的合法黑客攻击。
对于任何其他库 - 例如用 Java 编写的库,作者需要获得类似的许可证。如果成本是一个问题——例如在一个开源项目中,那么这足以抑制开始。
有关更多详细信息,请参阅此维基百科文章。
如果 LAME4J 对您来说不够稳定,那么恐怕您的选择可能是:
已经有一段时间了,但是 Oracle/Sun 已经发布了对 JMF 的 MP3 支持。这可以从以下网址下载: http ://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
将其添加到类路径将启用通过 AudioSystem api 播放。
LAME4J 使用免费但有时间限制的许可证,无限制的许可证会花费你一些钱。
我在 SourceForge 上找到了Lamejb 库,它只需要 lame 二进制文件,无需任何额外许可即可正常工作。
使用Process API调用SoX
SoX 带有源代码或作为 Windows 和 Mac 的预编译二进制文件。
如果您正在搜索纯 Java 版本的 lame,请查看以下来源:http: //jsidplay2.cvs.sourceforge.net/viewvc/jsidplay2/jump3r/
Jave2 项目是封装了 FFMPEG的Java 库,并通过一个相当有用的 Java API提供了它的大部分功能。
优点:
缺点:
*) 特别是围绕格式转换 - 过滤器功能大多没有表示。
**) 在 Java 中,启动一个进程并连接到它的标准输出和输入是可能的,但不是很舒服,并且使用命名管道(用于将 AV 与 FFMPEG 进行管道传输的 BKM)几乎是不可能的,即使你确实设法做到了那个,Jave2 不能很好地处理它。我有一套工具来解决这些问题,基于 JNA,如果有人感兴趣的话 - 我可以分享。