【问题标题】:ffmpeg for Android: neon build has text relocationsffmpeg for Android:neon build 有文本重定位
【发布时间】:2016-04-14 00:24:15
【问题描述】:

您好,我成功构建了包含 arm-v7a 霓虹灯支持的 appunite ffmpeg 库,但是当我尝试在我的 Marshmallow 设备上运行这些库时,我收到此错误:

01-08 23:42:02.350: E/AndroidRuntime(10144): java.lang.UnsatisfiedLinkError:
 dlopen failed: /data/app/com.example.demo-1/lib/arm/libffmpeg-neon.so: has text relocations

当我使用非霓虹灯构建时,它可以正常工作。

所以我用谷歌搜索了一下,发现这可能是相应 C/C++ 代码中的一个错误,但另一方面,它应该在使用 NDK v. 10e 重建时修复。这就是我所做的。但我仍然得到这些文本重定位:

~/Projekte/AndroidFFmpeg$ /usr/Android/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-readelf -a library/src/main/jniLibs/armeabi-v7a/libffmpeg-neon.so  | grep TEXTREL
 0x00000016 (TEXTREL)                    0x0
 0x0000001e (FLAGS)                      SYMBOLIC TEXTREL

这个问题似乎是相关的,但没有帮助:

"ffmpeg has text relocations" error in Android

libavcodec.so: has text relocations

我该如何解决这个问题?

【问题讨论】:

    标签: android c++ ffmpeg android-ndk neon


    【解决方案1】:

    这应该已经修复(自提交 https://git.libav.org/?p=libav.git;a=commitdiff;h=f963f80399d,2014 年 12 月以来),因此请确保您构建了一个足够新的版本,它应该没问题。

    arm、aarch64 和 x86_64 应该都可以在没有文本重定位的情况下正常工作,但是对于 32 位 x86,你不能轻易避免它。 (对于 x86,最简单的方法是使用 --disable-asm,但这确实会造成相当多的性能损失。)

    【讨论】:

    • 如何在 'String[] complexCommand = {"-ss", "" + startMs / 1000, "-y", "-i", selectedVideoUri.getPath(), " -t"、"" + (endMs - startMs) / 1000、"-vcodec"、"mpeg4"、"-b:v"、"2097152"、"-b:a"、"48000"、"-ac" , "2", "-ar", "22050", 文件路径};'
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2011-11-19
    相关资源
    最近更新 更多