【问题标题】:Getting PCM data from MP3 on Android从 Android 上的 MP3 获取 PCM 数据
【发布时间】:2011-07-15 10:03:37
【问题描述】:

我有兴趣在 Android 平台上做一些音乐分析。为此,我想将任意 MP3 解析为 PCM 数据。我环顾四周,似乎没有一种简单的方法可以做到这一点。我尝试过的一种解决方案是使用jLayer。这行得通,但速度非常慢,在播放歌曲的同时解码歌曲。

我知道 Android 上存在 MP3 解码器,Google 自己在支持的媒体类型下这么说。有谁知道如何在不实际播放的情况下使用 Android 解码器解码 MP3?我想要做的就是将这些位从 DAC 中转移出来,然后将它们存储在某个缓冲区中。

或者,有没有人使用 NDK 和MAD 之类的东西取得任何成功?性能提升有那么好吗?

【问题讨论】:

  • 嘿,你知道怎么做吗?
  • 我最终使用了 JLayer (javazoom.net/javalayer/javalayer.html)。它很慢,但很有效。
  • 嗨,我可以转换为 pcm,但是当我将它们保存为 int 并尝试播放它们时,我在写入文件时得到的值为 0000 1120 992d ff00 e44a 1124 1122 122c 它不起作用..知道怎么做吗?
  • 我真的不知道你在做什么,也无法调试你的代码。

标签: java android audio mp3 decode


【解决方案1】:

您可以编译和使用 LAME 解码器。它在 ARM 上运行良好。而且由于是C/C++,性能会更好。

大多数 ARM 平台上的硬件解码器都面向播放。所以不会给你完美的PCM。例如,为了避免抖动,如果负载很高,它会跳过一些数据。

LAME 编译说明如下:

Lame MP3 Encoder compile for Android

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多