HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错

HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错

这一张图为运行时的报错,当在c代码中导入ffmpeg相关的东西,编译运行后报错。

这里是c的代码。

这里是cmake配置。

请问如何解决呢?
7 回复
  • 单独从报错信息看似乎和ffmpeg没啥关系,而且报错的信息显示的也不是很全
  • 这边的ffmpeg产出文件是动态库so 用交叉编译环境出来的一般是静态库.a,这个是不是用交叉编译框架编译出来的ffmpeg产物。

更多关于HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


是通过交叉编译编译出来的so文件,llvm和sysroot都是api15的sdk包下复制来的,

给出如下排查思路:

  1. 确保cmake构建产物的名称跟cpp代码里面初始化的 nm_modname 一致。

  2. 在hilog中搜索nm_modname的名字或者构建产物的名字,应该会出现一个错误日志。

  3. 根据错误日志进行排查。

04-02 11:55:45.276   41582-41582   C02C11/com.zxh...usic/APPSPAWN  com.zxhhyj.starmusic  E     [appspawn_silk.c:118]Load silk library failed for configItems is NULL
04-02 11:55:49.518   41582-41582   C03F00/MUSL-LDSO                com.zxhhyj.starmusic  E     Error loading header: can't find library libavcodec.so.61 in namespace: moduleNs_default
04-02 11:55:49.518   41582-41582   C03F00/MUSL-LDSO                com.zxhhyj.starmusic  E     Error loading shared library libavcodec.so.61: (needed by /data/storage/el1/bundle/libs/arm64/liblibrary.so)
04-02 11:55:49.518   41582-41582   C03F01/com.zxh...tarmusic/NAPI  com.zxhhyj.starmusic  E     [(native_module_manager.cpp:868)(LoadModuleLibrary)] First attempt: load app module failed. Error loading shared library libavcodec.so.61: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/liblibrary.so)
                                                                                               Second attempt: load module default/library failed. module path is empty
04-02 11:55:49.518   41582-41582   C03F01/com.zxh...tarmusic/NAPI  com.zxhhyj.starmusic  E     [(native_module_manager.cpp:1031)(FindNativeModuleByDisk)] First attempt: load app module failed. Error loading shared library libavcodec.so.61: No such file or directory (needed by /data/storage/el1/bundle/libs/arm64/liblibrary.so)
                                                                                               Second attempt: load module default/library failed. module path is empty
                                                                                               try to load abc file from  failed,

依赖了 libavcodec.so 看起来打包的时候没打进去。临时解决方案可以在 entry 对应的 libs 里面把动态库拷贝进去,具体得看下为啥在子 module 没自动拷进去。

在HarmonyOS Next中导入FFmpeg后运行时报错,可能的原因包括FFmpeg库与HarmonyOS的兼容性问题、库文件未正确链接、或依赖项未完全配置。首先,确保FFmpeg库是针对HarmonyOS编译的,且使用了正确的架构和API版本。其次,检查项目配置,确保FFmpeg库文件路径正确,并在编译时正确链接。如果使用了动态库,确保库文件已正确部署到设备上。此外,检查FFmpeg的依赖项是否完整,如缺少某些依赖库也可能导致运行时报错。最后,查看具体报错信息,定位问题所在,可能是某些API在HarmonyOS上不支持或行为不一致。

在HarmonyOS鸿蒙Next中导入FFmpeg后运行时报错,可能原因包括:

  1. 库文件未正确链接或路径错误;

  2. 缺少依赖库;

  3. 编译选项不兼容。

建议检查CMakeLists.txt或Makefile配置,确保FFmpeg库路径正确,并添加必要的依赖库。同时,确认编译选项与鸿蒙系统兼容。若问题依旧,可尝试使用静态链接或更新FFmpeg版本。

回到顶部