10

我需要一个 Java 中的 OpenSource API,它可以将 *.wav 和 *.au 格式编码为 MP3,反之亦然。

我已经评估了 Java Sound API 和LameOnJ,但它们分别不符合我的要求并且不稳定。请推荐一个免费且独立于平台的。

4

6 回答 6

6

您可能还没有足够的答案,因为 MP3 格式要求解码器/编码器的作者从弗劳恩霍夫研究所获得许可。

我认为 LAME 库是从一个不尊重这些 IP 问题的国家分发的,但要做到这一点需要大量的合法黑客攻击。

对于任何其他库 - 例如用 Java 编写的库,作者需要获得类似的许可证。如果成本是一个问题——例如在一个开源项目中,那么这足以抑制开始。

有关更多详细信息,请参阅此维基百科文章

如果 LAME4J 对您来说不够稳定,那么恐怕您的选择可能是:

  • 等待 Sun 许可核心 JRE 的格式。这个,我相信他们最近已经完成了,但我不知道任何发布日期(可能与 JavaFX 有关)
  • 用Java实现你自己的,并支付许可证。我也不会喜欢这个。
  • 通过 JNA 或 SWIG 将您自己的 Java 包装器编写到 LAME
  • 为 Lame4J 做出贡献。
  • 选择另一种格式。OGG 和 FLAC 都很好,支持也比较好。
于 2008-11-25T13:57:25.573 回答
4

已经有一段时间了,但是 Oracle/Sun 已经发布了对 JMF 的 MP3 支持。这可以从以下网址下载: http ://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html

将其添加到类路径将启用通过 AudioSystem api 播放。

于 2011-07-31T07:41:42.050 回答
2

LAME4J 使用免费但有时间限制的许可证,无限制的许可证会花费你一些钱。

我在 SourceForge 上找到了Lamejb 库,它只需要 lame 二进制文件,无需任何额外许可即可正常工作。

于 2011-02-28T14:20:48.313 回答
1

使用Process API调用SoX

SoX 带有源代码或作为 Windows 和 Mac 的预编译二进制文件。

于 2008-11-25T08:07:52.503 回答
1

如果您正在搜索纯 Java 版本的 lame,请查看以下来源:http: //jsidplay2.cvs.sourceforge.net/viewvc/jsidplay2/jump3r/

于 2011-05-22T17:09:57.267 回答
0

Jave2 项目是封装了 FFMPEG的Java 库,并通过一个相当有用的 Java API提供了它的大部分功能

优点:

  • 功能强大且相当简单的有用 Java API。
  • FFMPEG 二进制文件捆绑在其中,因此您不必管理系统上的 FFMPEG 安装。

缺点:

  • 不支持流数据:您必须处理临时文件:每次转换都首先将所有内容存储在系统上的某些文件中,让 FFMPEG 为您创建新文件,然后读取它们。这不是 FFMPEG 的缺陷,更多的是 Java 中的一个问题,在该问题中很难将数据流式传输到外部进程**

*) 特别是围绕格式转换 - 过滤器功能大多没有表示。

**) 在 Java 中,启动一个进程并连接到它的标准输出和输入是可能的,但不是很舒服,并且使用命名管道(用于将 AV 与 FFMPEG 进行管道传输的 BKM)几乎是不可能的,即使你确实设法做到了那个,Jave2 不能很好地处理它。我有一套工具来解决这些问题,基于 JNA,如果有人感兴趣的话 - 我可以分享。

于 2020-05-10T06:14:23.690 回答