android将mp3解码为pcm数据的最快方法

ste*_*veh 5 java mp3 android decode

在我的应用程序中,我需要将 mp3 文件解码为 pcm 缓冲区。这是很多数据,所以我在读取和解码它时将其下采样到单声道 22050Hz。

目前我正在使用 javazoom jlayer 解码器http://www.javazoom.net/javalayer/javalayer.html

它可以工作,但速度很慢,在运行模式下解码一首 3 分钟的歌曲需要 30 秒,在调试模式下会老化。在我使用 libmpg 的 Windows 机器上,我可以在大约 1 秒内完成。

有没有更快的方法,任何人都知道肯定更快?如果不是更快,我不想浪费时间实施另一种方法。谢谢。

顺便说一下,在我的应用程序中,我需要将整个内容下载到内存中的 pcm 缓冲区,因此我对简单播放 mp3 文件的内容不感兴趣。

小智 1

这就是你在 android 中原生化的时刻!

-使用 NDK 并找到一个快速的 c/c++ 库(它们比 jlayer 快 20 倍,例如 18 秒内 9 分钟 sogn)

-这里有一些有用的库:

http://www.mpg123.de/

www underbit.com/products/mad/

www oracle.com/technetwork/java/javase/download-137625.html (不确定这个是否支持 MP3toPCM)

lame.sourceforge.net/about.php (这个在 github 上有一个 android 开源项目,我希望它对你非常有用! https://github.com/intervigilium/liblame