在Android上从MP3获取PCM数据

时间:2011-03-14 23:28:08

标签: java android audio mp3 decode

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

我知道Android上存在MP3解码器,谷歌在支持的媒体类型下表示自己。有没有人知道如何使用Android解码器解码MP3而不实际播放?我想做的就是将这些位从DAC转移出来并将它们存储在某个缓冲区中。

或者,有没有人使用NDK和MAD之类的东西取得任何成功?绩效收益是否良好?

1 个答案:

答案 0 :(得分:2)

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

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

关于编译LAME的说明是:

Lame MP3 Encoder compile for Android