5

我正在尝试使用 NDK 构建 FFmpeg 库以在我的 android 应用程序中使用。这样做的原因是因为我在android中使用了本机视频捕获功能,因为我真的不想编写自己的录像机。但是,本机视频捕获仅允许高质量编码或低质量编码。我想要介于两者之间的东西,我相信解决方案是使用 FFmpeg 库重新编码高质量视频以使其更轻。

到目前为止,我已经能够根据本指南构建 FFmpeg 库:http ://www.roman10.net/how-to-build-ffmpeg-for-android/以及我已经能够得到它的一些调整去工作。

然而,我发现的一切似乎都是关于编写自己的编码器,这对我来说似乎有点过头了。我真正想做的就是将命令行格式的字符串发送到 FFmpeg 的 main() 函数并重新编码我的视频。但是,我似乎无法弄清楚如何构建 FFmpeg 以使我能够访问 main 方法。我找到了这篇文章:编译 ffmpeg.c 并通过 JNI 调用它的 main(),它链接到一个项目,做我想做的事,但对于我的生活,我无法弄清楚发生了什么。看起来他编译的东西比我想要的要多,我真的很想让我的应用程序尽可能地轻量级。

一些额外的方向将非常有帮助。谢谢你。

4

1 回答 1

1

在 Android NDK 中,您的应用程序中没有典型意义上的 main(),因此您无法直接执行您想要执行的操作。但是,您仍然可以自己调用 FFmpeg 的 main() 并为其提供所有必要的参数。以下是获取参数的两种可能性:

  1. Android Activity 在创建后会收到一个 Intent。您可以在启动活动时通过意图传递参数,然后像这样提取它:

    Intent CommandLine = this.getIntent();
    Uri uri = CommandLine.getData();
    
  2. 您可以从您在 SD 卡某处创建的文件中读取参数并将其传递给 FFmpeg。

于 2012-09-13T08:24:37.150 回答