【问题标题】:MP3 Encoding in JavaJava 中的 MP3 编码
【发布时间】:2008-11-25 07:45:38
【问题描述】:

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

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

【问题讨论】:

    标签: java api encoding mp3


    【解决方案1】:

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

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

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

    更多详情请看wikipedia article

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

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

    【讨论】:

    • 谢谢詹姆士!我想我找到了与您建议的类似的东西。
    • @Mohit:你介意分享你的选择吗?它可能对其他对该主题感兴趣的人有用。
    • @Rekin:我看到这里我应该这样做......现在已经 3 年了,我不再有那个代码了。我完全忘记了我用的是什么。 :(
    【解决方案2】:

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

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

    【讨论】:

    • 那个插件只支持解码的MP3,不支持编码。
    【解决方案3】:

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

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

    【讨论】:

    • 你说的“限时”是指多长时间?
    • 使用 LAMEOnJ 时,您应该每月手动更新您的免费许可证密钥。所以如果不购买商业密钥,就无法用 LAMEOnJ 库做出稳定的产品。
    【解决方案4】:

    使用Process API 调用SoX

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        优点:

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

        缺点:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-28
          • 1970-01-01
          • 1970-01-01
          • 2012-01-27
          • 2013-10-23
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          相关资源
          最近更新 更多