java – 在Android上从MP3获取PCM数据

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

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

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

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

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

编译LAME的说明如下:

Lame MP3 Encoder compile for Android

点赞