【问题标题】:Create a Video file from images using ffmpeg使用 ffmpeg 从图像创建视频文件
【发布时间】:2012-05-01 08:06:52
【问题描述】:

我现在可以在我的项目创建的 Android.mk 文件中编译并将 ffmpeg 添加到 jni 文件夹中我想使用 ffmpeg 从我存储在我的静态数组列表中的图像创建一个视频文件

我搜索了很多,但找不到任何教程,非常感谢任何帮助。

【问题讨论】:

  • 在此链接stackoverflow.com/questions/4248316/… 中,发帖人说他可以在模拟器上这样做。你可能想检查一下。我自己从来没有这样做过
  • 它是 iPhone 的,我如何在 android 中实现它
  • 好的,我已经将整个 ffmpeg-android 文件夹添加到 jni 文件夹中添加了您现在提供的 Android.mk 文件我需要创建一个 C 文件并将此函数添加到其中??
  • 我认为首先你可以从 ndk 创建类似 hello-jni 的示例,以确保调用你的函数。然后你将你的 ffmpeg 代码添加到它,首先可能只是 av_register_all() 以确保它工作。然后,您可以从该链接添加基于 iphone 的代码,只有您必须弄清楚如何为 android 执行此操作。我的意思是,这些只是 FFMPEG API 调用,没有 iPhone 或 android 特定的调用。我知道的唯一教程是dranger.com/ffmpeg
  • 首先交叉编译 ffmpeg for android 并从 ffmpeg 源创建共享对象文件 (.so)。

标签: java android android-ndk


【解决方案1】:

我有类似的需求并完成了同样的工作。 有两种方法可以做到这一点。我想先分享一个简单的。

  • 在 Android 中创建一个临时文件夹。

  • 将图片复制到新文件夹中

  • 首先,按照数字顺序重命名您的图片。比如img1.jpg,img2.jpg,img3.jpg,... 那么你可以运行:

  • 以编程方式运行此程序ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg

要以编程方式运行,

使用以下代码:

void convertImg_to_vid()
{
    Process chperm;
    try {
        chperm=Runtime.getRuntime().exec("su");
          DataOutputStream os = 
              new DataOutputStream(chperm.getOutputStream());

              os.writeBytes("ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg\n");
              os.flush();

              chperm.waitFor();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

开始吧。我会帮助你..一切顺利

使用教程:http://ffmpeg.org/faq.html 特地通读教程里面的3.2部分。

为了能够运行上述命令,你应该在 bin 目录中有 ffmpeg 命令。 ffmpeg 二进制文件应该针对 Android 平台进行交叉编译...

【讨论】:

  • 所以我可以直接使用 ffmpeg 命令吗?我应该在 JNI 文件夹和 Android.mk 文件中做什么?我已将 ffmpeg-android 文件夹放在 JNI 文件夹中,我从 bamuser 库构建它
  • 是的,就像其他命令(ls、cd 等)一样,您也可以通过在 bin 库中复制可执行文件来使用 ffmpeg。但是当您想将其部署到最终产品中时会出现一些问题。我也会帮你的。但首先要开始,看看你是否能够做到这一点..
  • 我在哪里可以找到“ffmpeg”命令以及如何将它放在 bin 文件夹中,请指导我通过我对 ndk 和 ffmpeg 完全陌生
  • 请谷歌搜索 ffmpeg 代码并使用 NDK 或任何其他交叉编译器为 Android 交叉编译它。编译完成后,结果将是几个库和一个 eeexecutable。可执行文件使用 adb 将其复制到 /system/bin 中,并将库复制到 /system/lib 中。完成此操作后,您可以从 app.xml 复制可执行文件。请对构建 ffmpeg 的最终可执行文件进行一些研究。这是直截了当的。你会从互联网上得到它。我完全不记得我从哪里得到代码的来源。 Bambuser 我也尝试过编译,但不记得我用的是哪一个。
猜你喜欢
  • 2012-08-21
  • 2013-07-22
  • 1970-01-01
  • 2015-01-24
  • 2016-04-26
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多