[Bug Report] gstreamer1.0-libav: libgstlibav.so插件无法加载
Tofloor
poster avatar
粘贴为纯文本
deepin
2026-10-16 09:45
Author

软件包:
gstreamer1.0-libav 1.24.6-1deepin2 (crimson/main,amd64)
libgstreamer1.0-0 1.24.6-1 (crimson/main,amd64)

系统环境:
Deepin(社区仓库 crimson / beige)
架构:amd64

问题描述:
gstreamer1.0-libav 的版本号标注为 1.24.6-1deepin2,但包内的 libgstlibav.so 实际是使用 GStreamer 1.26 的头文件编译的,插件注册的 ABI 版本为 1.26。系统核心 libgstreamer1.0-0 为 1.24.6,GStreamer 加载插件时因主版本不匹配而拒绝加载,导致所有依赖 libav 插件的软件不可用。

复现步骤:

sudo apt install gstreamer1.0-libav gstreamer1.0-tools
rm -rf ~/.cache/gstreamer-1.0
GST_DEBUG=GST_PLUGIN_LOADING:4 gst-inspect-1.0 libav 2>&1 | grep -i -E "libav|error|not found"

预期结果:
gst-inspect-1.0 libav 正常列出 avdec_h264、avdec_aac 等元素。

实际结果:
gst-inspect-1.0 libav 输出"没有那样的组件或插件'libav'",调试日志显示:
WARN GST_PLUGIN_LOADING gstplugin.c:499:gst_plugin_register_func: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstlibav.so" has incompatible version (plugin: 1.26, gst: 1.24), not loading

原因分析:
dpkg -L gstreamer1.0-libav 确认 libgstlibav.so 已正常安装于 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstlibav.so,文件本身存在,仅因编译时所用 GStreamer 版本(1.26)与仓库中 libgstreamer1.0-0(1.24.6)不一致而无法注册。包版本号 1.24.6-1deepin2 与包内实际 ABI 版本(1.26)不符,应属打包时链接到了错误版本的 GStreamer 开发包,或打包环境与仓库其余 GStreamer 组件(plugins-base/good 为 1.24.13,plugins-bad/ugly 为 1.24.6)未对齐。

修复建议:
使用与 libgstreamer1.0-0 = 1.24.6 匹配的 GStreamer 开发环境重新构建 gstreamer1.0-libav;或在仓库整体升级至 GStreamer 1.26 时一并推进,并使版本号与实际 ABI 保持一致。

Reply Favorite View the author
All Replies

No replies yet