android - Android 上的 FFmpeg

标签 android ffmpeg stagefright android-ffmpeg

我已经在 Android 上编译了 FFmpeg (libffmpeg.so)。现在我必须构建像 RockPlayer 这样的应用程序或使用现有的 Android 多媒体框架来调用 FFmpeg。

  1. 您是否有在 Android/StageFright 上集成 FFmpeg 的步骤/程序/代码/示例?

  2. 能否指导我如何使用此库进行多媒体播放?

  3. 我有一个要求,我已经有音频和视频传输流,我需要将其提供给 FFmpeg 并对其进行解码/渲染。我如何在 Android 上执行此操作,因为 IOMX API 是基于 OMX 的并且无法在此处插入 FFmpeg?

  4. 此外,我找不到有关需要用于播放的 FFmpeg API 的文档。

最佳答案

以下是我让 ffmpeg 在 Android 上运行的步骤:

  1. 为 Android 构建 ffmpeg 静态库。这是通过使用 libffmpeg 构建 olvaffe 的 ffmpeg android 端口 ( Android Build System ) 实现的。 .只需将源放在/external 下并 make 即可。您还需要从 Android 构建中提取 bionic(libc) 和 zlib(libz),因为 ffmpeg 库依赖于它们。
  2. 使用 Android 创建动态库包装 ffmpeg 功能 NDK .有很多关于如何使用 NDK 的文档。基本上你需要编写一些 C/C++ 代码来将你需要的功能从 ffmpeg 导出到一个库中,java 可以通过 JNI 与之交互。 NDK 允许您轻松链接到您在第 1 步中生成的静态库,只需在 Android.mk 中添加类似于此的行:LOCAL_STATIC_LIBRARIES := libavcodec libavformat libavutil libc libz

  3. 使用 java 源代码中的 ffmpeg-wrapping 动态库。那里有足够的关于 JNI 的文档,你应该没问题。

关于使用ffmpeg播放,有很多例子(ffmpeg二进制本身就是一个很好的例子),here是一个基础教程。最好的文档可以在标题中找到。

祝你好运:)

关于android - Android 上的 FFmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459648/

相关文章:

java - 从对话框中选择项目后如何告诉应用程序做什么?

java - 更新 Firebase 性能 SDK 后应用程序未构建

Android Studio – 在 Mac OS 上通过 Wi-Fi 运行和调试构建

android - 如何在 Android 中从 pocketsphynx 释放麦克风

ffmpeg(webm)不尊重请求的比特率

Android Stagefright 无法设置视频帧率

android - 如何创建怯场插件

android - 为什么编译器不能从 sp<android::MetaData> 隐式转换为 bool?

ffmpeg - 直接提供静态视频内容与通过自适应流媒体协议(protocol)(HLS、DASH)

objective-c - 是否可以使用 iOS 8 中的 Video Toolbox 解压缩所有 H.264 视频流?