我正在尝试使用 NDK 构建 FFmpeg 库以在我的 android 应用程序中使用。这样做的原因是因为我正在使用android中的 native 视频捕获功能,因为我真的不想编写自己的录像机。但是, native 视频捕获只允许高质量编码或低质量编码。我想要介于两者之间的东西,我相信解决方案是使用 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它链接到一个项目,做我想要的更多或更少,但对于我的生活,我无法弄清楚发生了什么。看起来他编译的比我想要的要多,我真的很想让我的应用程序尽可能轻量。
一些额外的指导会非常有帮助。谢谢。
最佳答案
在 Android NDK 中,您的应用程序中没有典型意义上的 main(),因此您无法直接执行您想执行的操作。但是,您仍然可以自己调用 FFmpeg 的 main() 并为其提供所有必要的参数。这里有两种获取参数的可能性:
Android Activity 在创建后收到一个 Intent。您可以在启动 Activity 时通过 Intent 传递参数,然后像这样提取它:
Intent CommandLine = this.getIntent(); Uri uri = CommandLine.getData();
您可以从您在 SD 卡上某处创建的文件中读取参数并将其传递给 FFmpeg。
关于android - 为 Android 构建 FFmpeg 以使用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923837/