【问题标题】:How to decode MP3 in Android within app?如何在应用程序内解码 Android 中的 MP3?
【发布时间】:2012-06-25 14:28:04
【问题描述】:

我目前正在开发一个允许用户选择 MP3 音频文件的应用程序。然后我的应用程序会处理该文件。

对于此处理,应用程序需要解码音频文件以获取原始 PCM 输出。

要解码 MP3,我有两个选择:

  1. 使用Android系统解码MP3,获取PCM数据。
  2. 自己在手机上解码 MP3,无需支付 MP3 许可费。

我的问题是#1 在技术上是否可行?而对于#2,手机上的 MP3 许可证是否也涵盖应用程序?

【问题讨论】:

    标签: android mp3 decode


    【解决方案1】:

    据我所知,没有 Android 提供的解码 MP3 的方法。

    我以前用过JLayer,可以推荐它用于MP3 处理。将 NDK 与 c++ 库一起使用可能会更快,但如果您希望将其保留为 Java,那就是我会使用的。它仍然比实时更快,大约 30 秒以平均比特率 3 分钟的 MP3 解码所有帧。这是 Galaxy S(1GHz) 的情况,因此任何较新的手机都更快。

    就许可而言,我无法为您提供帮助。 JLayer 本身是 LGPL,但 MP3 许可的世界比用过的机油更模糊。经过几天寻找具体答案后,我放弃并做到了。整个世界似乎对谁首先持有许可证存在分歧。

    【讨论】:

      【解决方案2】:

      Android系统现在可以解码mp3文件了,见here它描述了Android平台提供的媒体编解码器、容器和网络协议支持。

      MediaCodec 是一个非常强大的框架,用于对媒体文件进行编码和解码。

      【讨论】:

      • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。见how to answer
      【解决方案3】:

      选项 1 绝对不可能(除非您想针对 ICS+ 设备并愿意编写本机 C 代码以使用 OpenSL 解码 MP3)。 jLayer 的 Geobits 推荐是一个不错的选择。在大多数情况下,处理 jLayer 是轻而易举的事。这是一篇很好的博客文章,会有所帮助:http://mindtherobot.com/blog/624/android-audio-play-an-mp3-file-on-an-audiotrack/

      【讨论】:

        猜你喜欢
        • 2014-07-06
        • 2012-02-16
        • 1970-01-01
        • 2019-01-14
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多