opencv VideoWriter保存视频失败原因
2014-11-11 09:42
681 查看
opencv 中,VideoWriter类 如果不能成功打开(也就是说 .isOpened()返回为false), 通常有两类主要原因。
1. 封装支持
保存文件名需要写明保存文件的封装格式,后缀为 .avi 可以成功打开编码器,本人试用过 .mp4, 未能打开。
2.编码格式支持
VideoWriter构造函数的第二个参数是一个代表编码格式的整数,它是通过指名编码格式的名称来转换的。例如
如果你不能正常保存视频,也有可能是你的系统没有对应的编码库。 指的是MJPEG 编码格式,那么需要你的系统里支持MJPEG编码(光支持解码是不够的)。本人的系统里面安装了ffmpeg(本人其他博文有ffmpeg 的安装方法), 在我编译opencv库时已经配置了这一选项。因此ffmpeg支持的编解码库,我的opencv 也是支持的。
ffmpeg -codecs 查询ffmpeg支持的编解码形式
例如: 查询是否支持264编码
如果我使用 CV_FOURCC('A','V','C', '1')参数,那么打开VideoWriter时会提示我无法打开,提示我安装libx264(一个开源的H264编解码库)
但是我使用 CV_FOURCC('D', 'I','V','X') CV_FOURCC(‘M’, 'J', ‘P’, 'G') 都可以正常打开
正常使用案例:
为了采集测试样本,昨晚自己在PC上搭了一个简单的DVR(结合了运动检测,因此录了13小时,只用来 500M磁盘空间),晚上11点下班时将它打开,第二天来到办公室,采集到了各位同仁上班的风采。
1. 封装支持
保存文件名需要写明保存文件的封装格式,后缀为 .avi 可以成功打开编码器,本人试用过 .mp4, 未能打开。
2.编码格式支持
VideoWriter构造函数的第二个参数是一个代表编码格式的整数,它是通过指名编码格式的名称来转换的。例如
如果你不能正常保存视频,也有可能是你的系统没有对应的编码库。 指的是MJPEG 编码格式,那么需要你的系统里支持MJPEG编码(光支持解码是不够的)。本人的系统里面安装了ffmpeg(本人其他博文有ffmpeg 的安装方法), 在我编译opencv库时已经配置了这一选项。因此ffmpeg支持的编解码库,我的opencv 也是支持的。
ffmpeg -codecs 查询ffmpeg支持的编解码形式
例如: 查询是否支持264编码
ffmpeg -codecs | grep 264 ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers built on Nov 10 2014 20:48:19 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 D.V.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10最后一行告诉了我 H264只支持啦decoder, 没有encoder ,因此我的opencv 是不能支持264编码的。
如果我使用 CV_FOURCC('A','V','C', '1')参数,那么打开VideoWriter时会提示我无法打开,提示我安装libx264(一个开源的H264编解码库)
但是我使用 CV_FOURCC('D', 'I','V','X') CV_FOURCC(‘M’, 'J', ‘P’, 'G') 都可以正常打开
正常使用案例:
const char* fileName = "/home/sean/Projects/office_video_3.avi";
videoWriter = VideoWriter(fileName, CV_FOURCC('D', 'I','V','X'), 30, sizeTemp, true); if(!videoWriter.isOpened()) { cout<< "Error : fail to open video writer\n"<<endl; return -1; }
为了采集测试样本,昨晚自己在PC上搭了一个简单的DVR(结合了运动检测,因此录了13小时,只用来 500M磁盘空间),晚上11点下班时将它打开,第二天来到办公室,采集到了各位同仁上班的风采。
相关文章推荐
- Opencv videowriter保存的视频只有几K
- 解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题
- opencv VideoWriter 保存空文件,只有6k
- OPENCV 录制视频0KB cvCreateVideoWriter返回值为NULL
- c# VideoWriter保存的视频不支持中文路径
- 解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题
- opencv 将视频读为图片放在指定文件夹中/将指定文件夹中图片读出并合成视频 cvCreateVideoWriter试分析
- opencv 将视频读为图片放在指定文件夹中/将指定文件夹中图片读出并合成视频 cvCreateVideoWriter试分析
- 解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题
- python 使用OpenCV保存视频失败的解决方案及摄像头显示灰色的解决办法
- txt不保存为图片的原因,是创建dc时宽度值为负值,dc建立失败
- opencv视频保存
- 通过OPENCV从视频中获取图片并保存
- 用opencv将连续编号的图片保存为avi视频 【有问题,如果你看到,请指教~】
- 用opencv抽取视频的帧并保存为连续的图片
- OpenCV_读视频文件、保存视频文件
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- opencv读取视频,摄像头,保存视频代码
- 利用opencv类库在MFC显示摄像头视频并且保存摄像头视频
- 分享:PyQt+OpenCV 录制保存、播放视频