c++ - VideoWriter 不写任何东西

标签 c++ opencv ubuntu ffmpeg video-codecs

当我尝试使用 VideoWriter 编写帧时,它不起作用。我已经尝试了很多 FOURCC 代码,例如 defaul、h264、mjpg、divx、xvid 等。是的,我已经安装了具有所有必要配置的 ffmpeg(--enable-shared、--enable-libx264、... ) 并且 opencv 安装支持 ffmpeg。

我已经在谷歌上搜索了很多,而我发现的所有内容都几乎没有解决这个问题,这在 OpenCV 中经常出现。该代码可能是最简单的,并且在几周前就可以使用,但并非没有。

一些见解: get(CV_CAP_PROP_FPS) 返回未知选项消息,值为 -1(对于集合也是如此)。 opencv的cmake过程的以下部分也很有趣:

-- Could NOT find Jasper (missing:  JASPER_LIBRARIES JASPER_INCLUDE_DIR) 
-- checking for module 'gstreamer-video-1.0'
--   package 'gstreamer-video-1.0' not found
-- checking for module 'gstreamer-app-1.0'
--   package 'gstreamer-app-1.0' not found
-- checking for module 'gstreamer-riff-1.0'
--   package 'gstreamer-riff-1.0' not found
-- checking for module 'gstreamer-pbutils-1.0'
--   package 'gstreamer-pbutils-1.0' not found
-- checking for module 'gstreamer-base-0.10'
--   package 'gstreamer-base-0.10' not found
-- checking for module 'gstreamer-video-0.10'
--   package 'gstreamer-video-0.10' not found
-- checking for module 'gstreamer-app-0.10'
--   package 'gstreamer-app-0.10' not found
-- checking for module 'gstreamer-riff-0.10'
--   package 'gstreamer-riff-0.10' not found
-- checking for module 'gstreamer-pbutils-0.10'
--   package 'gstreamer-pbutils-0.10' not found
-- Looking for linux/videodev.h
-- Looking for linux/videodev.h - not found
-- Looking for linux/videodev2.h
-- Looking for linux/videodev2.h - found
-- Looking for sys/videoio.h
-- Looking for sys/videoio.h - not found
-- Looking for libavformat/avformat.h
-- Looking for libavformat/avformat.h - found
-- Looking for ffmpeg/avformat.h
-- Looking for ffmpeg/avformat.h - not found

Opencv 2.4.10
Ubuntu 14.04

编辑:我发现问题是 VideoWriter 对象没有打开,即使在构造函数调用之后:
VideoWriter wr(outputFile, CV_FOURCC('D','I','V','X'), capture.get(CV_CAP_PROP_FPS,Size(capture.get(CV_CAP_PROP_FRAME_WIDTH),capture.get(CV_CAP_PROP_FRAME_HEIGHT)));

并且使用 CV_CAP_PROP_FPS 使 OpenCV 在 secution time 显示以下消息:
HIGHGUI ERROR: V4L2: Unable to get property <unknown property string>(5) - Invalid argument

为什么这个 hqppen,我该如何解决?

最佳答案

给出输出文件。“带扩展名”
试试这个:
示例 - 带有 CV_FOURCC('M', 'J', 'P', 'G') 的 outputfile.avi

关于c++ - VideoWriter 不写任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825385/

相关文章:

C++ 命名空间成员在不同文件中的访问如何进行? "namespace std"是如何实现的?

c++ - 查找图像中圆的各个中心点

c++ - 在 OpenCV Mat 和 Leptonica Pix 之间转换

java - undefined symbol : _ZTTN2cv4SURFE

ubuntu - 如何向送杯子发送 "print only in black ink"命令?

r - 无法在 AWS Ubuntu 实例上运行 Shiny 应用程序。 xdg-打开 : no method available for opening 'http://127.0.0.1:3572'

c++ - 这些重载运算符如何应用于表达式 d***b?

c++ - 基于多种值类型对 vector 进行排序

C++ promise / future : Which to return from a function?

bash - GOLANG 检查mongodb是否正在运行