【问题标题】:FFmpeg - Finally compiled. Now what?FFmpeg - 最终编译。怎么办?
【发布时间】:2014-05-14 08:18:26
【问题描述】:

好的,这就是我的故事:

我正在创建一个应用程序,该应用程序需要我拍摄几张图像和一段视频并将它们合并在一起。起初我不知道要使用什么,从未听说过 ffmpeg 或 ndk。在与 NDK 战斗大约 5 天后,切换到 Ubuntu 并疯狂使用 ndk-build 命令,我终于让 FFmpeg 使用 dolphin- 进行编译播放器 示例。现在我可以在我的电脑和安卓设备上运行 ffmpeg,我不知道下一步该做什么。

以下是我的主要问题:

  • 要使用 FFmpeg,我发现我需要使用某种命令。首先什么这些命令是,在哪里我在哪里运行它们?

  • 其次,这些命令是我需要的吗?我的意思是我可以正常运行我的应用程序,在它的某个地方以某种方式执行命令,然后它会为我完成其余的工作吗?还是我需要代码中的某种元素,例如 VideoEncoder 实例或其他东西..

  • 第三,我看到有人用NDK来用FFmpeg,我吗?还是可选?如果可能的话,我想避免使用 C,因为我根本不知道它..

  • 可选:最后但同样重要的是,这是处理我在应用程序中需要做的事情的最佳方式吗?如果是这样,有人可以简单地指导我如何使用 FFmpeg 完成上述任务(提及命令或类似的东西)..

我知道这是一堵文字墙,但每个问题对我来说都很重要!

非常感谢 stackoverflow 社区!

【问题讨论】:

  • 我猜你必须将编译后的库作为依赖项放在你的项目中,并开始通过 JNI 调用方法。这不是您构建 FFmpeg 库的原因吗?你对命令的理解是什么?

标签: android video android-ndk ffmpeg


【解决方案1】:

我看到我的答案可能不再与您的问题相关,但我仍然把它放在这里,因为我最近经历了同样的路径,我理解这件事造成的痛苦和困惑(使用设置 NDK混合 gradle 插件需要 1 天,构建 FFmpeg 需要 2 天,然后在 wtf 失败,我接下来应该做什么??)

简而言之,正如@Daniel 指出的那样,如果您只是想使用 FFmpeg 运行命令,例如要求压缩、剪切、插入关键帧......那么 Write mind 的预建 FFmpeg Android Java 是让 FFmpeg 运行的最简单方法在您的应用程序上。缺点是因为它只是运行命令,所以它需要为进程获取输入和输出文件。请参阅my question here 以获得进一步说明。

如果您需要执行比这更复杂的任务,那么您别无选择,只能将 FFmpeg 构建为库并从中调用 API。我已经写下了对我有用的分步说明(2016 年 5 月)。你可以在这里看到它:

请不要让我在这里复制整个内容,因为它的说明很长,而且我更容易让 1 个信息源保持最新。我希望这可以节省某人的键盘;)。

【讨论】:

    【解决方案2】:

    1、FFmpeg 可以是一个应用程序,也可以是一组库。如果您将其用作应用程序(安装了可执行二进制文件),则可以在终端中键入命令。该应用程序仅具有有限的功能,可能无法解决您的问题。在这种情况下,您需要在程序中使用 ffmpeg 作为库并调用 API。

    2,据我了解,这些命令无法解决您的问题。您需要调用 ffmpeg API。有一堆用于视频/图像编码/解码的示例代码。您可能还需要一个容器来打包结果,ffmpeg 库也可以做到这一点。

    3,我更喜欢 NDK,因为 ffmpeg 是用 C/C++ 编写的。 ffmpeg 有 JAVA 包装器;如果您使用它们,则不需要 NDK。但是,并非 ffmpeg 中的所有函数都包装得很好——你可以试试。如果不是,则返回 NDK 解决方案。

    4,最简单的方法是将所有视频/图像解码为原始帧,按所需顺序组合它们,然后对其进行编码。但是在实践中,这会消耗太多内存。那么关键点就变成了:我怎样才能在飞行中做同样的事情?到了这一步就不会太难了。

    【讨论】:

    • 你能把我链接到任何 ffmpeg 包装器吗?
    • 如何使用 dolphin-player 代码来完成我的任务?
    • dolphin-player 解码视频文件并在屏幕上显示每一帧。您需要的是 (1) 解码一些视频/图像文件,(2) 组合它们,以及 (3) 编码/保存在另一个文件中。因此,dolphin-player 可以完成第 (1) 步,而您还需要完成剩下的工作。
    • 我尝试过使用以下内容:github.com/guardianproject/android-ffmpeg-java 然而在 createSlideshowFromImagesAndAudio 的过程完成后,该文件永远不会创建。如果你碰巧知道为什么,请在这里发表评论.. 同时我会尝试 FMJ
    • FMJ 无法满足我的要求。它支持FFMpeg for android中非常基本的功能。
    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多