我正在尝试构建FFmpeg库,以便在我的Android应用程序中使用NDK。原因是因为我在android中使用本机视频捕获功能,因为我真的不想编写自己的录像机。但是,本机视频捕获仅允许高质量编码或低质量编码。我想要介于两者之间,我相信解决方案是使用FFmpeg库将高质量视频重新编码为更轻。
到目前为止,我已经能够根据本指南构建FFmpeg库:http://www.roman10.net/how-to-build-ffmpeg-for-android/以及我已经能够使其工作的一些调整。
但是,我发现的所有内容似乎都是关于编写自己的编码器,这对我来说似乎有些过分。我真正想做的就是将命令行格式的字符串发送到FFmpeg的main()函数并重新编码我的视频。但是,我似乎无法弄清楚我是如何构建FFmpeg来让我访问main方法的。我发现这篇文章:Compile ffmpeg.c and call its main() via JNI链接到一个项目,做我想要的更多,但对于我的生活,我无法弄清楚发生了什么。看起来他的编译比我想要的还多,我真的希望尽可能减轻我的应用程序。
一些额外的方向将非常有帮助。谢谢。
答案 0 :(得分:1)
在Android NDK中,典型意义上的应用程序中没有main(),因此您无法直接执行所需操作。但是,您仍然可以自己调用FFmpeg的main()并为其提供所有必要的参数。以下是获取参数的两种可能性:
Android Activity在创建后收到一个Intent。您可以在开始活动时通过意图传递参数,然后像这样提取它:
Intent CommandLine = this.getIntent();
Uri uri = CommandLine.getData();
您可以从SD卡上创建的文件中读取参数并将其传递给FFmpeg。
答案 1 :(得分:1)
第二个回答者似乎有你的答案。请参阅此链接。 Can FFmpeg be used as a library, instead of a standalone program?