FFMPEG issues for android lollipop. error: only position independent executables (PIE) are supported

FFMPEG issues for android lollipop. error: only position independent executables (PIE) are supported

过去 2 年我一直在我的应用程序中使用 FFmpeg 库,它在旧版本上仍然运行良好。它甚至不能用于 android 棒棒糖。

我以前用过这些库。

String[] libraryAssets = { "ffmpeg", "libavcodec-55.so", "libavcodec.so",
            "libavfilter-4.so", "libavfilter.so", "libavformat-55.so",
            "libavformat.so", "libavutil-52.so", "libavutil.so",
            "libswresample-0.so", "libswresample.so", "libswscale-2.so",
            "libswscale.so"

    };

我从其他 link 那里得到了答案,如果我们使用这 3 个库,它也可以在 lollipop 上运行

"liblicense-jni.so,","libloader-jni.so","libvideokit.so"

但是还是没有解决。 请检查此日志。

 ***Starting FFMPEG***
 ***error: only position independent executables (PIE) are supported.***
 ***Ending FFMPEG***

任何帮助或库中的任何更新??

您可以找到使用 x264、libass、fontconfig、freetype 和 fribidi(支持 Android L)编译的 Android 的 FFmpeg 以及编译指南 here

如果编译有困难,可以使用预编译库here

因为 API 21,您 运行 的可执行文件需要编译为 PIE。这是为了提高内存的使用率,因为 PIE 或 PIC(位置无关代码)可以加载到任何内存地址,因此它不会重叠。

要将 ffmpeg 编译为 PIE,您需要获取最新的 NDK 并构建它。在较旧的 NDK 上,您必须提供 PIE 选项,但新的 NDK 默认会这样做。