如何在Android中使用sonic NDK播放mp3文件?

时间:2012-11-26 06:51:04

标签: android mp3 playback

我在我的应用中使用Sonic Ndk播放此示例https://github.com/waywardgeek/sonic-ndk的音频。但它无法播放mp3文件。

2 个答案:

答案 0 :(得分:1)

Android NDK没有这样的api。但是在ndk中有几种播放mp3的解决方案。

  1. 您可以使用MediaPlayer平台API。 见https://android.googlesource.com/platform/frameworks/av/+/master/include/media/mediaplayer.h

    但是,它不是公共API,它可以被制造商打破。

  2. 您可以使用OpenMAX AL界面。 最近,ndk支持OpenMAX AL。

    但是,它很难使用,很少引用。 :(

    仅支持api等级14或以上。

  3. 您可以在jni中调用java方法。

    您可以在下面的源代码中看到如何在c / c ++源代码中调用java方法。 https://android.googlesource.com/platform/frameworks/base/+/master/media/jni/android_media_MediaScanner.cpp

    我认为这是比其他人更好的解决方案。

答案 1 :(得分:0)

对于迟到回复这篇文章感到抱歉,我找到了解决方案。

SONIC ndk正在播放pcm文件。

您可以将任何mp3转换为pcm,然后尝试播放的文件是demo sonic项目,您将能够播放该文件。对于mp3转换为pcm我使用ffmpeg使用命令

ffmpeg -y -i mymp3file.mp3 -f s16le -acodec pcm_s16le mypcmfile.pcm