【问题标题】:using FFmpeg for android without any C/C++ or make knowledge在没有任何 C/C++ 或知识的情况下使用 FFmpeg for android
【发布时间】:2014-10-01 11:45:44
【问题描述】:

我想在我的 android 应用上使用 FFmpeg 库。 我没有 C/C++/Make 知识,我一直在阅读的所有主题都在谈论我完全不理解的东西。

是否有任何预编译的库可以添加到我的项目中,然后在我的 java 类上添加一个简单的“导入”语句,然后调用它?

谢谢

【问题讨论】:

    标签: java android c++ ffmpeg


    【解决方案1】:

    有什么特别的原因为什么您需要 FFmpeg?我想有可能获得预构建的二进制文件,但由于它是一个 C 库,因此您还需要一个 JNI 包装器代码 - 我认为没有人会为整个库生成它,因为它非常大,所以即使有您仍然需要一些 JNI 知识才能在 C 中连接 Java 和 FFmpeg 之间的通信。仅用于演示目的 - here 是一个示例。

    除此之外,如果没有特殊原因使用 FFmpeg,你为什么不能坚持使用作为 Android API 一部分的MediaCodec?它包装了本机 StageFright 库,可以在可用的设备上提供硬件支持,而 FFmpeg 将是一个仅 CPU 的解决方案。当然,如果需要一些在 MediaCodec 中不可用的冷门编解码器或复用器,那么 FFmpeg 就是办法。

    【讨论】:

    • MediaCodec 是 API 16,Muxer 是 18。我需要 API 8/9,也许我可以把它扩展到 14。
    • 我尝试查看 StageFright / OMX,但不知道如何使用它。至于“包装”FFmpeg,即使只是将其预编译并使用允许将 FFmpeg 命令作为一个长字符串发送的方法进行包装就足够了。
    • 好的,如果您需要一个 API 级别而 MediaCodec 不可用,我猜 FFmpeg 是最好的方法。好吧,我认为您无法找到预构建的二进制文件,因为在某些情况下这种做法违反了许可证(如果二进制文件包含专有编解码器等)。大多数托管的脚本(例如github.com/luhuiguo/ffmpeg-andriodgithub.com/liquidware/ffmpeg-android)要么是旧的,要么只包含非专有的东西。你能告诉你需要什么编解码器吗?因为对于他们中的很多人来说,你实际上也必须为 arm 编译编解码器库。
    【解决方案2】:

    您可以使用Xuggler 对音频和视频进行编码和解码。他们的网站说“Xuggler 广泛使用 FFmpeg 压缩和解压缩媒体”。

    【讨论】:

    【解决方案3】:

    您可以使用来自JavaCPP Presets 的预编译库以及来自JavaCVFFmpegFrameRecorder 来压缩图像和音频样本,例如RecordActivity sample 中所示。

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      相关资源
      最近更新 更多