我在我的应用中使用Sonic Ndk播放此示例https://github.com/waywardgeek/sonic-ndk的音频。但它无法播放mp3文件。
答案 0 :(得分:1)
Android NDK没有这样的api。但是在ndk中有几种播放mp3的解决方案。
您可以使用MediaPlayer平台API。 见https://android.googlesource.com/platform/frameworks/av/+/master/include/media/mediaplayer.h
但是,它不是公共API,它可以被制造商打破。
您可以使用OpenMAX AL界面。 最近,ndk支持OpenMAX AL。
但是,它很难使用,很少引用。 :(
仅支持api等级14或以上。
您可以在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