You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用FFmpegFrameGrabber.start()加载MP4文件时崩溃问题求助

解决UnsatisfiedLinkError: couldn't find "libjniavutil.so"问题

看起来你在使用JavaCV的FFmpegFrameGrabber加载本地MP4时遇到了原生库加载失败的问题,这个错误通常是因为原生库未正确打包、依赖版本不兼容或者架构匹配问题导致的,下面是几个我亲测有效的解决办法:

1. 统一JavaCV依赖版本

你当前使用的OpenCV和FFmpeg presets版本分别是3.1.0-1.3和3.2.1-1.3,虽然主版本号一致,但子版本的差异可能导致原生库依赖关系紊乱。JavaCV的各个presets需要保持版本统一,才能确保原生库之间的协作正常。建议升级到较新的稳定版本,同时统一版本号:

// 替换原有的依赖
implementation 'org.bytedeco.javacpp-presets:opencv-platform:4.5.5-1.5.7'
implementation 'org.bytedeco.javacpp-presets:ffmpeg-platform:4.4.2-1.5.7'

新版本不仅修复了旧版本的兼容性问题,还对主流设备架构(比如arm64-v8a)提供了更完善的支持。

2. 检查ABI配置与ProGuard规则

ABI过滤设置

如果你的App只针对特定架构编译,需要确保build.gradle中明确指定了支持的ABI,避免JavaCV的原生库被错误裁剪:

android {
    defaultConfig {
        ndk {
            // 根据你的测试设备和发布需求调整,比如保留arm64-v8a和armeabi-v7a
            abiFilters 'arm64-v8a', 'armeabi-v7a'
        }
    }
}

ProGuard混淆规则

如果开启了代码混淆(minifyEnabled true),需要在proguard-rules.pro中添加JavaCV的保护规则,防止原生库相关的类被混淆或移除:

-keep class org.bytedeco.** { *; }
-keep class org.bytedeco.javacpp.** { *; }
-dontwarn org.bytedeco.**

3. 手动初始化原生库(可选)

有时候自动加载机制可能失效,你可以在使用FFmpegFrameGrabber之前手动加载所需的原生库,注意加载顺序要遵循依赖关系(先加载基础库):

static {
    try {
        // 先加载FFmpeg基础库
        System.loadLibrary("jniavutil");
        System.loadLibrary("jniavcodec");
        System.loadLibrary("jniavformat");
        // 再加载OpenCV库(版本对应调整,3.x用opencv_java3,4.x用opencv_java4)
        System.loadLibrary("opencv_java4");
    } catch (UnsatisfiedLinkError e) {
        Log.e("NativeLibLoader", "Failed to load native libraries", e);
    }
}

4. 清理缓存并重建项目

Android Studio的缓存有时候会导致依赖打包异常,执行以下步骤:

  • 点击File -> Invalidate Caches / Restart,选择Invalidate and Restart
  • 重启后,执行Build -> Clean Project
  • 最后执行Build -> Rebuild Project

5. 验证设备架构匹配

检查你的测试设备是否是arm64-v8a架构,旧版本的FFmpeg presets可能对某些架构的支持不全,升级到前面推荐的新版本可以解决这个问题。


内容的提问来源于stack exchange,提问作者Anand Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:42:47