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

标签 android ffmpeg

库:https://github.com/ser-gik/smoothrescale
你好!我有一个关于如何更新这个库并使它在最新的 android sdk 中工作的问题。
我正在使用在几个 android sdk 中运行的这个库,并注意到以下内容:
在 Android 30 中,具有项目定位
compileSdkVersion 22
构建工具版本“22.0.1
targetSdkVersion 22
工作没有问题。
在 Android 30 中,具有项目定位
compileSdkVersion 23
构建工具版本“23.0.3
targetSdkVersion 23
引发错误 libswscale.so"has text relocations ( https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23 )
在 Android 31 中,具有项目定位
compileSdkVersion 22
构建工具版本“22.0.1
targetSdkVersion 22
应用程序显示一个对话框“此应用程序是为旧版本构建的”并关闭。
在 Android 31 中,具有项目定位
compileSdkVersion 23
构建工具版本“23.0.3
targetSdkVersion 23
dlopen 失败:找不到库“libsmoothrescale.so”。
目标是让这个库在 Android 23 到 31 中工作,但是有几个场景我真的不知道我应该从哪里开始我的调查和学习。
我应该了解 lib 在 native 级别如何工作吗?是否可以仅使用 Android Studio 功能使这项工作?欢迎任何指导或评论。
谢谢

最佳答案

上周,我使用 NDK-r23b 为 Android 12(目标 31)编译了 ffmpeg-4.3.1 和 ffmpeg-android-maker没有问题。输出将为您提供 4 个拱门,包括 armeabi-v7a、arm64-v8a、x86、x86_64,每个拱门都有 *.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 的 header 替换
smoothrescale/smoothrescale/src/main/jni/ffmpeg/include/*
因为 *.so 需要使用相应的头文件。
这就是为什么你会得到像 这样的错误。 libswscale.so"具有文本重定位
.只需替换 *.so 有时不向后兼容。

关于android - 如何使 libswscale FFMpeg 库在 android 23+ 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71269734/

相关文章:

bash - 如何解析 ffprobe 输出并根据结果运行 ffmpeg?

android - SimpleDiskCache inputStream 数字格式错误

android - 从具有 ID、Android 的联系人提供程序中检索电话号码

android - Cordova 插件安装 MAC

FFmpeg : Overlay GIF Rotation and scale

python - 不和谐主题曲

Android 多部分短信 - 单独接收

android - 当我的 wifi 在 Android 手机上连接时打开一些链接

c++ - 捕获和播放 MJPEG - 使用 OpenCV 和 ffmpeg 通过 UDP 传输网络视频流

GCC:如何将库编译成一个 C 文件?