如何在Android中构建和使用ffmpeg

8
我正在原型化一个相当简单的相机应用程序,以测试使用MediaRecorder创建自定义相机活动的功能,但有一个问题,我想将录制的视频的长宽比设置为1:1。经过大量研究,我发现只有使用像FFMPEG这样的库才能裁剪视频的每个帧到我想要的大小。
我已经阅读了许多有关在Android上构建FFMPEG的不同方法的教程和文章,但其中大部分都已过时,使用较旧版本的Android NDK和FFMPEG,或者最近的一些方法只是无法按照指示工作。我尝试遵循流行的http://www.roman10.net/how-to-build-ffmpeg-for-android/和其他几个类似的方法,但都会导致一个缺少pkg-config文件的错误,因为FFMPEG通常应安装在Linux或其他操作系统上。我在这里找到了一些有关使用make-standalone-toolchain.sh文件在Android中构建FFMPEG的信息http://software.intel.com/en-us/android/blogs/2013/12/06/building-ffmpeg-for-android-on-x86,但不知道如何使用这种方法。
这现在引出了我的问题:目前在Android应用程序中构建和使用FFMPEG的最佳/经过验证的方法是什么?如果独立工具链方法是正确的方法,是否有比列出的更容易遵循的材料?我甚至可以接受一个可靠的模板应用程序,其中包含准备好的FFMPEG库(如果可能);尽管如此,我更想知道如何将其构建到Android中以供将来使用。谢谢您提前为此问题提供的任何建议或建议。

你可以使用这个,它很容易实现。 https://github.com/WritingMinds/ffmpeg-android-java - Prateek
2个回答

1

谢谢您的建议。我很快会抽出时间来研究这个问题,并尝试构建一个基于此的模板项目。如果手动将ffmpeg编译到ndk中不成功,而该项目解决了我的问题,我一定会将其标记为答案。再次感谢! - don_vito
嘿,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我只是将上面链接中的zip文件中的项目名称“p”导入ADT,并尝试将其作为应用程序运行。我错过了什么吗?一旦我能够让这个应用程序独立运行,那么我就应该能够创建一个包含ffmpeg库的空Android项目,对吧? - don_vito
你是否构建了本地部分(生成libffmpeg.so或类似的文件)?我相信它在“p”目录中,并且您可以使用NDK进行构建。 - Alexander Kulyakhtin
抱歉已经有一段时间了。我运行了compile.sh,构建了ffmpeg库。现在我已经解决了那个错误,但是应用程序指出缺少其他本地库,下一个是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");。这些都是它正在尝试加载的库。是否还需要运行脚本来处理这些库? - don_vito
我刚把ffmpeg.so从构建中拿到我的项目中并开始使用它。我相信海豚播放器也需要其他库。我记不清楚构建海豚播放器有任何问题,不过它可以顺利生成。 - Alexander Kulyakhtin

1

嘿,感谢您的建议。其中一些链接我以前见过,但似乎我没有深入研究最后一个链接,因为那可能是我正在寻找的东西。测试后,我一定会回来标记哪些对我有用。谢谢! - don_vito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接