OpenCV VideoCapture错误:VIDIOC_REQBUFS:设备

时间:2018-11-27 16:41:58

标签: opencv

我一直在尝试使用OpenCV从Java文件中读取视频。我在Ubuntu上运行OpenCV 4.0.0。目前,我一直在尝试如下操作:

VideoCapture videoCapture = new VideoCapture("/home/gkammer/Downloads/test.mp4");

但是,这给了我错误消息VIDIOC_REQBUFS: Inappropriate ioctl for device

我已经尝试过使用FFMPEG重建OpenCV,就像许多类似的问题所建议的那样,但仍然出现错误。当我执行cmake时,这是相关的输出:

Video I/O: DC1394: YES (ver 2.2.5) FFMPEG: YES avcodec: YES (ver 57.107.100) avformat: YES (ver 57.83.100) avutil: YES (ver 55.78.100) swscale: YES (ver 4.8.100) avresample: YES (ver 3.7.0) GStreamer: NO v4l/v4l2: linux/videodev2.h

有关如何解决此问题的任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

我能够使用 OpenCV 4.0.1-34-g78da67947 GStreamer 1.14.1 在Ubuntu 18.04上阅读 .mp4 视频。 LTS。

要启用此视频后端,请使用以下命令安装gstreamer所需的依赖项:

sudo apt install libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good

然后在打开WITH_GSTREAMER标志的情况下重新编译OpenCV。

即使使用正确的选项编译了OpenCV,我也很难用 V4L DC1364 读取mp4视频或rtsp流:

"  Video I/O:
"
"    DC1394:                      YES (2.2.5)
"
"    FFMPEG:                      NO
"
"      avcodec:                   NO
"
"      avformat:                  NO
"
"      avutil:                    NO
"
"      swscale:                   NO
"
"      avresample:                NO
"
"    GStreamer:                   YES (1.14.1)
"
"    v4l/v4l2:                    YES (linux/videodev2.h)

如果有人可以解决这个问题(特别是DC1394后端)。

答案 1 :(得分:0)

如果未安装gstreamer或使用sudo apt-get gstreamer-xxx进行安装时遇到问题,请尝试sudo apt install ubuntu-restricted-extras

我也遇到了这个问题,于是我注意了OpenCV编译头文件,安装了official docs中列出的几乎所有软件包(libjasper除外),cmake在没有WITH_GSTREAMER的情况下使用了WITH_FFMPEG = ON并得到了在Ubuntu 18.04中使用C ++和Python播放具有不同文件扩展名(avi,mkv)的视频。

此外,显式WITH_GSTREAMER = ON不会将标志GSTREAMER设置为YES。