如何在android中构建和使用ffmpeg

Posted

技术标签:

【中文标题】如何在android中构建和使用ffmpeg【英文标题】:How to build and use ffmpeg within android 【发布时间】:2014-04-08 14:34:10 【问题描述】:

我正在对一个相当简单的相机应用程序进行原型设计,以使用 MediaRecorder 创建一个自定义相机活动进行测试,我想将录制视频的纵横比设置为 1x1。通过大量研究,我发现这只能通过使用像 FFMPEG 这样的库将视频的每一帧裁剪到我想要的大小来实现。

我已经阅读了许多关于将 FFMPEG 构建到 android 中的不同方法的教程和文章,但其中大多数要么已经过时并且使用 Android NDK 和 FFMPEG 的旧版本,要么在遵循更新时无法正常工作。我尝试关注流行的http://www.roman10.net/how-to-build-ffmpeg-for-android/‎ 和其他一些类似的,这些都导致有关丢失 pkg-config 文件的错误,因为 FFMPEG 通常意味着安装在 linux 或其他操作系统上。我在http://software.intel.com/en-us/android/blogs/2013/12/06/building-ffmpeg-for-android-on-x86 处使用make-standalone-toolchain.sh 文件找到了一些关于在an​​droid 中构建FFMPEG 的信息,并且无法就如何使用这种方法做出正面或反面。

这引出了我的问题:目前在 android 应用程序中构建和使用 FFMPEG 的最佳/经过验证的方法是什么?如果独立的工具链方法是要走的路,有没有比列出的更容易理解的材料?我什至愿意接受一个可靠的模板应用程序,准备好 FFMPEG 库(如果可能的话);不过,我更想知道如何将其构建到 android 中以供将来使用。

提前感谢您对此问题的任何意见或建议。

【问题讨论】:

你可以用这个,很容易实现。 github.com/WritingMinds/ffmpeg-android-java 【参考方案1】:

这是我最喜欢的指南:http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/

如果您需要更多选择,可以看看这些,它们同样不错:

https://github.com/guardianproject/android-ffmpeg https://github.com/halfninja/android-ffmpeg-x264 https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk

编辑:我用更新的文章更新了第一个链接(它使用NDK r9)。

【讨论】:

您好,感谢您在这里的建议。我以前看过其中一些链接,但似乎我没有深入研究最后一个链接,因为这可能是我正在寻找的。我一定会在测试后回来并标记对我有用的东西。谢谢!【参考方案2】:

我已经成功构建了 ffmpeg 库,使用

https://code.google.com/p/dolphin-player/

你必须在 Ubuntu 上才能构建它。

【讨论】:

感谢您的建议。我应该有时间尽快看看这个,我可能会尝试以此构建一个模板项目。如果我没有成功将 ffmpeg 手动构建到 ndk 中并且这个项目解决了我的问题,我一定会将此标记为答案。再次感谢! 嗨,Alex,我尝试在 mac 和 Ubuntu 操作系统上构建 dolphinPlayer 项目并收到相同的错误:E/AndroidRuntime(13450): FATAL EXCEPTION: main 03-14 22:07:42.563: E/AndroidRuntime(13450): java.lang.UnsatisfiedLinkError: Couldn't load ffmpeg: findLibrary returned null 我刚刚导入了项目名称 'p'从上面的链接到 ADT 的 zip 中,并尝试将其作为应用程序运行。我错过了什么吗?一旦我可以让这个应用程序自行运行,那么我应该能够使用包含的 ffmpeg 库来制作一个空的 android 项目是吗? 您是否构建了本机部分(导致 libffmpeg.so 或类似的东西)?我相信它在“p”目录中,您使用 NDK 构建它 抱歉,久违了。我运行了编译 ffmpeg 库的 compile.sh。所以现在我已经克服了这个错误,还有其他本机库,应用程序状态下一个缺少的是 sdl 库。 System.loadLibrary("ffmpeg"); System.loadLibrary("sdl"); System.loadLibrary("sdl_ttf"); System.loadLibrary("sdl_image"); System.loadLibrary("iconv"); System.loadLibrary("universalchardet"); System.loadLibrary("yuv2rgb"); System.loadLibrary("application");。这些是它试图加载的所有库。是否也需要为此运行脚本? 我刚刚将 ffmpeg.so 从构建中带到我的项目中并开始使用它。海豚播放器,我相信,是的,也需要其他库。我不记得构建 dolphin player 有任何问题,但它构建得很顺利。

以上是关于如何在android中构建和使用ffmpeg的主要内容,如果未能解决你的问题,请参考以下文章

正确构建适用于所有 Android 架构的 FFmpeg

如何在android上使用ffmpeg录制视频?

如何在android中从命令行运行ffmpeg

Android:如何在 android studio 中配置 FFMPEG 最新版本?

ffmpeg 库不工作

如何在ffmpeg中合并音频和两个视频文件?