如何在ADT项目中使用ffmpeg4android?

时间:2013-01-14 19:57:49

标签: android android-ndk ffmpeg

我在sourceforge上使用项目FFmpeg4Android来构建FFmpeg .so共享库文件。但是,我在ADT Java应用程序中使用它们时遇到了问题。我创建了一个简单的JNI调用,试图调用av_register_all并且我得到库错误。

当我在Nexus 7上运行应用程序时,我被告知它无法加载库libavformat-HEAD-1.0.so

所以我试图通过System.loadLibrary方法加载它,我无法找到libavcodec-HEAD-1.0.so。以这种方式回过头来,我最终试图加载libavutil-HEAD-1.0.so,它产生了一个错误'找不到符号'__strchr_chk“'。

这是我的Java类:

public class LibavcodecTest {
    public static native void avRegisterAll();

    static {
        System.loadLibrary("avutil-HEAD-1.0");
        System.loadLibrary("avcodec-HEAD-1.0");
        System.loadLibrary("avformat-HEAD-1.0");
        System.loadLibrary("LibavcodecTest");
    }
}

更新

我联系了维护ffmpeg4android的开发人员,他能够指导我将我正在构建的android源代码版本改为与我的设备相同,这样我的设备可以成功调用av_register_all。

然而,现在我收到一个叫做avformat_open_input的崩溃,我收到了“致命信号11(SIGSEGV)”。

我在网上的搜索让我相信这是一个内存访问问题。有没有人知道是否可以通过加载共享库来解决这个问题?

1 个答案:

答案 0 :(得分:2)

让构建的共享库在我的设备上运行的关键是在与之兼容的旧NDK上构建源代码。我试图在最新的源代码上构建它,但是没有用。

Here is a link to the discussion I had with the developer who helped me solve it.