ffmpeg-android dlopen failed: library “libclang_rt.ubsan_standalone-aarch64-android.so“ not found

NDK编译的ffmpeg 库,在android上使用,提示动态库错误:

15:08:54.276 18357 18357 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libclang_rt.ubsan_standalone-aarch64-android.so" not found

在配置编译ffmpeg的时候去掉配置:--toolchain=clang-usan
分析:
1.0关于这个toochain=clang-usan 是个什么配置,有何用?

首先在configure 脚本里面搜罗了一遍:
--toolchain=NAME         set tool defaults according to NAME
                           (gcc-asan, clang-asan, gcc-msan, clang-msan,
                           gcc-tsan, clang-tsan, gcc-usan, clang-usan,
                           valgrind-massif, valgrind-memcheck,
                           msvc, icl, gcov, llvm-cov, hardened)
没什么有用的信息。接着百度下 libclang_rt.ubsan_standalone-aarch64-android.so 这个库,看有何说明,也没什么发现,看看这个库的名称,关键是 clang_rt.ubsan, 接着找 ubsan关键字,还是没什么发现,科学上网谷歌了一波,不得不说这些系统、软件、语言等玩意儿毕竟都是人家搞出来的,搜出来就是直接啊,直达官方说明:

https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
 clang 的官方文档介绍,UBSan  全称:UndefinedBehaviorSanitizer 顾名思义
就是一个调试用的工具,类似于gdb  配合-g参数。在添加了这个配置之后编译出来的库体积非常大,比如我编译出来的ffmpeg   libavcodec.a 竟然达到了300M. 当然,我们去掉这个配置不使用该工具即可,只是debug工具的话,对功能没有影响,去掉该配置之后编译出来的库大小才正常

 2.0 解决方法

最直接的就是去掉对这个库的依赖,也就是去掉这个配置 --toolchain=**, 如果真的需要使用这个工具,可以让我们编译出来的库 编译阶段就打包进来这个库,在ndk编译环境中中可以找到这个库的

并且在android手机上也确实存在这个so库:
  只是 android对 应用层加载系统库有名单限制, 白名单在系统的:/etc/public.libraries.txt

如果有root权限,可以手动修改机器上的这个文件,添加上libclang_rt.ubsan_standalone-aarch64-android.so,这样就可以加载该库了。 关于android设备上的这个白名单文件,
 See https://android.googlesource.com/platform/ndk/+/master/docs/PlatformApis.md

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ffmpeg-5.0-1.5.7-windows-x86_64.jar 是一个用于在 Windows 平台上运行的 FFmpeg 库文件。它是一个开源的音视频处理工具,可以从多种媒体文件中提取、转码和编辑音视频流。 这个库文件是基于 FFmpeg 项目的最新版本 5.0 开发的。它支持在 Windows 64 位操作系统上运行,并提供了一系列功能强大的音视频处理方法。它可以读取和写入各种常见的音视频格式,包括 MP4、AVI、FLV、MOV 等。用户可以使用该库来提取音频或视频流,转码音视频文件,剪辑视频,添加字幕等。 要使用 ffmpeg-5.0-1.5.7-windows-x86_64.jar,首先需要在您的 Java 项目中引入该库文件。您可以将其作为依赖项添加到项目的 Classpath 中。然后,您可以通过在 Java 代码中调用相应的方法来使用 FFmpeg 功能。 例如,您可以使用 FFmpeg 在音频文件中提取音频流,然后对其进行编码或解码。您可以使用 FFmpeg 在视频文件中提取视频流,并进行截图或修改分辨率。您还可以使用 FFmpeg 对多个媒体文件进行合并或拆分操作。 除了提供强大的音视频处理功能外,ffmpeg-5.0-1.5.7-windows-x86_64.jar 还提供了丰富的文档和示例代码,以帮助用户更好地了解和使用该库。您可以参考官方文档和示例代码,了解每个方法的使用方法和参数说明。 总之,ffmpeg-5.0-1.5.7-windows-x86_64.jar 是一个在 Windows 平台上运行的 FFmpeg 库文件,提供了强大的音视频处理功能。用户可以使用它来处理音视频文件,实现音视频提取、转码、编辑等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值