我正在开发一个程序,它具有允许在qtwidgets中打开和预览视频的功能。我试图让它至少运行三天没有成功。我尝试使用Arch Linux和Windows的不同机器运行完美(我也尝试使用W10在同一台机器上运行正常)。我不想因此而安装其他操作系统。下面我附上了产生相同运行时错误的简单示例。
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::VideoCapture("path_to_file_that_exists.mp4");
return 0;
}
结果如下:
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
GStreamer Plugin: Embedded video playback halted; module qtdemux0 reported: Internal data stream error.
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline
) in cvCaptureFromCAM_GStreamer, file /home/user/Documents/opencv-build/opencv-3.1.0/modules/videoio/src/cap_gstreamer.cpp, line 818
terminate called after throwing an instance of 'cv::Exception'
what(): /home/user/Documents/opencv-build/opencv-3.1.0/modules/videoio/src/cap_gstreamer.cpp:818: error: (-2) GStreamer: unable to start pipeline
in function cvCaptureFromCAM_GStreamer
Press <RETURN> to close this window...
修改
我没有找到问题的确切答案。在使用来自源代码(版本1.4,1.6,1.8,1.10)的插件编译Gstreamer后,我遇到了与视频相同的问题(在几个版本中我没有遇到问题,因为我根本无法加载单帧视频)我决定将发行版改为我的旧发行版--Arch Linux,因为它没有这个问题(我真的不知道为什么)。