我一直在尝试使用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
有关如何解决此问题的任何建议将不胜感激。
答案 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。