HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错
HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错
这一张图为运行时的报错,当在c代码中导入ffmpeg相关的东西,编译运行后报错。
这里是c的代码。
这里是cmake配置。
请问如何解决呢?
- 单独从报错信息看似乎和ffmpeg没啥关系,而且报错的信息显示的也不是很全
- 这边的ffmpeg产出文件是动态库so 用交叉编译环境出来的一般是静态库.a,这个是不是用交叉编译框架编译出来的ffmpeg产物。
更多关于HarmonyOS鸿蒙Next中导入ffmpeg后运行时报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
给出如下排查思路:
-
确保cmake构建产物的名称跟cpp代码里面初始化的 nm_modname 一致。
-
在hilog中搜索nm_modname的名字或者构建产物的名字,应该会出现一个错误日志。
-
根据错误日志进行排查。
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,
在HarmonyOS Next中导入FFmpeg后运行时报错,可能的原因包括FFmpeg库与HarmonyOS的兼容性问题、库文件未正确链接、或依赖项未完全配置。首先,确保FFmpeg库是针对HarmonyOS编译的,且使用了正确的架构和API版本。其次,检查项目配置,确保FFmpeg库文件路径正确,并在编译时正确链接。如果使用了动态库,确保库文件已正确部署到设备上。此外,检查FFmpeg的依赖项是否完整,如缺少某些依赖库也可能导致运行时报错。最后,查看具体报错信息,定位问题所在,可能是某些API在HarmonyOS上不支持或行为不一致。
在HarmonyOS鸿蒙Next中导入FFmpeg后运行时报错,可能原因包括:
-
库文件未正确链接或路径错误;
-
缺少依赖库;
-
编译选项不兼容。
建议检查CMakeLists.txt或Makefile配置,确保FFmpeg库路径正确,并添加必要的依赖库。同时,确认编译选项与鸿蒙系统兼容。若问题依旧,可尝试使用静态链接或更新FFmpeg版本。