Ubuntu22.04LTS+Matlab2023b使用VideoReader遇GStreamer关键警告
解决Ubuntu 22.04 LTS下Matlab 2023b VideoReader的GStreamer警告问题
问题说明
使用Matlab 2023b的VideoReader读取部分视频文件时,出现以下GStreamer警告:
(MATLAB:4591): GStreamer-Base-CRITICAL **: 10:55:45.909: basetransform: second attempt to fixate caps returned invalid (NULL) caps on pad vaapipostproc0:sink
该问题不局限于特定视频格式(AVI/MP4均会出现),且更新、重装GStreamer组件后未解决。
可行解决方案
1. 禁用Matlab的硬件加速视频解码
Matlab默认启用的VA-API硬件加速可能与部分视频编码参数不兼容,导致GStreamer处理出错。可通过环境变量强制使用软件解码:
- 临时生效:启动Matlab前在终端执行:
export MATLAB_USE_VIDEOIO_HW=0 matlab - 永久生效:编辑
~/.bashrc或~/.profile文件,添加上述环境变量,执行source ~/.bashrc使设置生效。
2. 指定GStreamer软件解码插件
在Matlab命令行执行以下代码,强制VideoReader调用软件解码组件:
prefset('VideoReaderPlugin', 'GStreamerSoftware');
设置后重启Matlab生效,后续读取视频将优先使用软件解码链。
3. 补充安装GStreamer全量插件
部分视频可能使用特殊编码子格式,需安装完整插件集覆盖更多编码支持:
sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-libav
4. 转换视频编码格式(临时方案)
若上述方法无效,可先将问题视频转为兼容编码格式(如H.264+AAC)再读取:
ffmpeg -i input_video.mp4 -c:v libx264 -c:a aac output_video_compatible.mp4
内容的提问来源于stack exchange,提问作者Alvaro Perona Lopez de Heredia
相关产品推荐
相关产品推荐

