4

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

4

2 回答 2

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

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

于 2013-02-08T07:30:29.217 回答
0

抱歉回复这篇文章迟了,我找到了解决办法。

SONIC ndk 正在播放 pcm 文件。

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

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

于 2013-12-05T14:18:38.410 回答