我如何在Android上实际使用ffmpeg?

slh*_*hck 6 java-native-interface android ffmpeg android-videoview

关于Android和ffmpeg,我有一个非常基本的问题.我从http://bambuser.com/opensource获得了ffmpeg,并且能够为ARM编译它.

结果是二进制文件(ffmpeg)以及几个libsomething.so文件.

我的问题是:这足以解码视频吗?那我怎么实际使用ffmpeg呢?

要加载库,我有:

static {
    System.load("/data/data/com.package/lib/libavcodec.so");
 }
Run Code Online (Sandbox Code Playgroud)

它加载很好.那么呢?

更多解释:我看到其他项目,人们在项目的JNI目录中有他们的ffmpeg源.他们还创建了一些Android.mk文件和一些C代码.我也需要这个吗?为什么我首先创建.so文件然后再次复制ffmpeg源代码?

我知道NDK,它应该如何工作,但我从来没有见过人们如何将使用它实际调用的ffmpeg功能的例子,因为人们似乎隐藏它们的实现(这是那种可以理解),但即使不给有用的线索或例子.

我们只想说我想解码一个视频文件.我需要实现哪种本机方法?我该如何运行该项目?需要传递哪些数据类型?这里肯定有一些人至少做过这件事,我从搜索上来的时间和时间都知道这一点.

Fat*_*tih 6

对于你的第一个问题;

仅仅构建是不足以正确使用ffmpeg库.您还应该按正确的顺序包装这些文件.因为这些文件NEDED链接时有其他库.您可以使用显示so文件的标题信息.

objdump -x libavcodec.so | grep NEEDED
Run Code Online (Sandbox Code Playgroud)

所以你需要通过Android.mk包装这些文件.您可以查看此链接.

第二个;

您只需要ffmpeg项目中的头文件.实现将与所有库相关联.也许是因为,开发人员并不打算过滤头文件.

最后一个;

你的想法目前似乎是正确的,目前大多数开发人员都在努力使用ffmpeg但他们缺乏文档和示例代码.