针对android棒棒糖的FFMPEG问题。错误:仅支持位置独立可执行文件(PIE)

时间:2015-02-18 06:28:43

标签: android ffmpeg android-support-library video-processing

我在过去的两年里在我的应用程序中使用了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"

    };

我从其他链接得到了答案,如果我们使用这3个库,它将适用于棒棒糖以及

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

但它还没有解决。 请查看此日志。

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

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

2 个答案:

答案 0 :(得分:1)

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

如果您在编译时遇到困难,可以使用预编译的库here

答案 1 :(得分:1)

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

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