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

时间:2011-05-09 11:41:14

标签: android ffmpeg java-native-interface android-videoview

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

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

我的问题是:这足以解码视频吗?我如何实际使用ffmpeg?

要加载我拥有的库:

static {
    System.load("/data/data/com.package/lib/libavcodec.so");
 }

加载很好。那么呢?

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

<子> 我知道NDK以及它应该如何工作但我从未见过如何使用它来实际调用ffmpeg函数的例子,因为人们似乎隐藏了他们的实现(这是可以理解的)但是甚至没有提供有用的指针或例子。

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

1 个答案:

答案 0 :(得分:6)

关于你的第一个问题;

正确构建对于正确使用ffmpeg库是不够的。您还应该按正确的顺序包装这些文件。因为这些文件NEDED链接时有其他库。您可以使用。

显示so文件的标题信息
objdump -x libavcodec.so | grep NEEDED

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

第二个;

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

最后一个;

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