opencv VideoWriter保存视频失败原因

opencv 中,VideoWriter类 如果不能成功打开(也就是说 .isOpened()返回为false), 通常有两类主要原因。

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点下班时将它打开,第二天来到办公室,采集到了各位同仁上班的风采。

VideoWriter保存视频文件失败可能有几个原因。首先,您需要确保您指定的输出视频路径和文件名是有效的,并且您具备写入该目录的权限。另外,您需要检查指定的视频编解码器是否正确。请确保您使用的编解码器与您的系统兼容。您可以尝试使用其他常见的编解码器,例如MJPG或XVID。此外,还要注意检查您的保存视频的帧率是否正确并与实际帧率匹配。您可以使用`cap.get(CV_CAP_PROP_FPS)`函数来获取捕获视频的帧率,并在打开VideoWriter时将其作为参数传递。最后,请确保在循环结束后调用`outputVideo.release()`函数来释放资源并保存视频文件。如果您按照以上步骤操作仍然无法保存视频文件,请检查您的代码是否存在其他问题,并确保您的OpenCV库版本是最新的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决:VideoWriter保存视频无法打开以及保存视频仅有几KB](https://blog.csdn.net/qq_44824148/article/details/121243991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [opencv VideoWriter保存摄像头视频、本地视频等](https://blog.csdn.net/qq_33840050/article/details/103241045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值