如何使libswscale FFMpeg库在android 23+中工作



库:https://github.com/ser-gik/smoothrescale

你好!我有一个关于如何更新这个库并使其在最新的android sdk中工作的问题。

我在几个android sdk中运行这个lib,并注意到以下内容:

在Android 30中,带有针对的项目

compileSdk版本22buildToolsVersion;22.0.1targetSdkVersion 22

工作没有问题

在Android 30中,带有针对的项目

compileSdk版本23buildToolsVersion;23.0.3targetSdkVersion 23

抛出错误libswscale.so"具有文本重定位(https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23(

在Android 31中,带有针对的项目

compileSdk版本22buildToolsVersion;22.0.1targetSdkVersion 22

应用程序显示对话框";此应用程序是为旧版本";然后关闭

在Android 31中,带有针对的项目

compileSdk版本23buildToolsVersion;23.0.3targetSdkVersion 23

dlopen失败:库"libsmoothrescale;找不到

目标是让这个库在Android 23中工作到31,但有几个场景我真的不知道我应该从哪里开始调查和学习。

我应该学习lib在本机级别中是如何工作的吗?有没有可能让这个工作只与安卓工作室的乐趣?欢迎任何指导或评论。

感谢

上周,我用NDK-r23b为安卓12(目标31(和ffmpeg安卓制造商编译了ffmpeg-4.3.1,没有任何问题。输出将为您提供4个arch,包括armeabi-v7a、arm64-v8a、x86、x86_64,每个arch都有*.so类似libswscale.so

注意ffmpeg-4.4.1或5.0在对帧进行编码时(尚未解决(,将在我的测试中输出vstencxxxx错误,因此暂时不要使用它们

ffmpeg-android-maker.sh --target-abis=arm64-v8a --source-tar=4.3.1 --android-api-level=31
ffmpeg-android-maker.sh --target-abis=armeabi-v7a --source-tar=4.3.1 --android-api-level=21 # Here use lowest support

您还需要来自ffmpeg android maker/output/include的标头来替换

smoothrescale/smoothrescale/src/main/jni/ffmpeg/include/*

因为*.so需要使用相应的头文件。这就是为什么你会得到像libswscale这样的错误;具有文本重定位。只需替换*.,所以有时不向后兼容。

最新更新