用Java编码的MP3

时间:2008-11-25 07:45:39

标签: java api encoding mp3

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

我已经评估了Java Sound API和LameOnJ,但它们分别不符合我的要求并且不稳定。请建议一个免费且与平台无关的。

6 个答案:

答案 0 :(得分:6)

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

我认为LAME图书馆是从一个不尊重这些知识产权问题的国家发布的,但是为了实现这一目标需要相当多的法律支持。

对于任何其他库 - 例如用Java编写的库,作者需要获得类似的许可。成本是个问题 - 例如在一个开源项目中,这足以阻碍启动。

有关详细信息,请参阅此wikipedia article

如果LAME4J不够稳定,那么我担心你的选择可能是:

  • 等待Sun授权核心JRE的格式。这个,我相信他们最近做过,但我不知道任何发布日期(也许与JavaFX有关)
  • 在Java中实现自己的,并支付许可证。我也不会喜欢这个。
  • 通过JNA或SWIG
  • 将您自己的Java包装器编写到LAME
  • 为Lame4J做出贡献。
  • 选择另一种格式。 OGG和FLAC非常好,并得到了相对较好的支持。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

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

我在SourceForge上找到Lamejb library,它只需要蹩脚的二进制文件,并且无需任何额外许可即可正常运行。

答案 3 :(得分:1)

使用Process API调用SoX

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

Jave2 project是Java库,它包装FFMPEG并通过相当有用的Java API提供大部分功能 *

优点:

  • 强大而简单的有用Java API。
  • 捆绑了FFMPEG二进制文件,因此您不必管理系统上的FFMPEG安装。

缺点:

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

*),特别是围绕格式转换的内容-过滤器功能大部分未显示。

**)在Java中,可以启动进程并连接到其标准输出和输入,但并不舒适,并且几乎不可能使用命名管道(用于将AV与FFMPEG进行管道传输的BKM),即使您这样做设法做到这一点,Jave2不能很好地发挥作用。如果有人有兴趣,我有一套基于JNA的工具来解决这些问题-我可以分享。