Проблемы с FFMPEG для Android Lollipop. ошибка: поддерживаются только позиционно-независимые исполняемые файлы (PIE)

Я использовал библиотеку FFmpeg в своем приложении за последние 2 года, и она все еще отлично работает в старой версии. Он даже не будет работать на Android Lollipop.

Я использовал эту библиотеку раньше.

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***

Любая помощь или какое-либо обновление в библиотеке ??


person Ahmad Arslan    schedule 18.02.2015    source источник
comment
Я также сталкиваюсь с той же проблемой. дайте мне знать, если вы нашли какое-либо решение или любой другой способ решить эту проблему.   -  person Mihir Shah    schedule 12.03.2015
comment
Вы ничего не можете с этим поделать, это новая функция безопасности. Даже если вы можете изменить поведение на корневых устройствах forum.xda-developers.com/google-nexus-5/development/ вам следует искать PIE ffmpeg, например. это выглядит хорошо github.com/hiteshsondhi88/ffmpeg-android-java   -  person Tearsdontfalls    schedule 17.03.2015


Ответы (2)


Вы можете найти FFmpeg для Android, скомпилированный с помощью x264, libass, fontconfig, freetype и fribidi (поддерживает Android L), с руководством по компиляции здесь.

И если вы столкнулись с трудностями при его компиляции, вы можете использовать предварительно скомпилированную библиотеку здесь.

person Salmaan    schedule 18.03.2015
comment
Вы хотите сказать, что это уже предварительно скомпилированная библиотека, и мне просто нужно ее использовать? - person Ahmad Arslan; 18.03.2015
comment
Большое спасибо, эта предварительно скомпилированная библиотека сработала для меня :) - person Ahmad Arslan; 18.03.2015

Начиная с API 21 исполняемые файлы, которые вы запускаете, должны быть скомпилированы как PIE. Это предназначено для улучшения использования памяти, поскольку PIE или PIC (позиционно-независимый код) могут быть загружены в любой адрес памяти, чтобы они не перекрывались.

Чтобы скомпилировать ffmpeg как PIE, вам нужно получить последнюю версию NDK и собрать ее. В старых NDK вы должны были предоставить опцию PIE, но в новом это делается по умолчанию.

person Simas    schedule 18.03.2015
comment
Я сделал это, но у меня это не сработало. Я скомпилировал x264 на платформе Android-8, а затем скомпилировал ffmpeg на Android-16. может быть проблема в том, что мне нужно скомпилировать оба из них на платформе Android-16. Просто посмотрите на ответ Салмана, он только что дал мне предварительно скомпилированную ссылку, вау, я просто вставляю свой проект и запускаю, и он работает :) - person Ahmad Arslan; 18.03.2015
comment
Любая идея, как скомпилировать исполняемые файлы как PIE? - person speedynomads; 19.08.2015