如何使用大于2 GB的OpenCV编写avi文件?

时间:2015-11-16 10:30:08

标签: python c++ opencv video ffmpeg

我正在使用OpenCV和Python,但实际上可以切换到C ++,所以如果有问题请回答问题。

我正在使用

编写.avi文件(将多个avi文件合并为一个)
cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]]) 

但最近发现我不能用它写大于2 GB的.avi文件。它甚至在那里提到:Due to this OpenCV for video containers supports only the avi extension, its first version. A direct limitation of this is that you cannot save a video file larger than 2 GB.

但是现在我没有时间像ffmpeg那样学习新的图书馆了,我需要非常快速地学习。

如何使用具有OpenCV知识的C ++或Python编写此文件,或者至少使用输入部分编写此文件 - 使用

cv::Mat 

as frames

2 个答案:

答案 0 :(得分:2)

你已经回答了自己的问题,但我发现它并不是你想要的答案。

从您的链接

  

正如您所看到的,视频会让事情变得非常复杂。但是,OpenCV主要是一个计算机视觉库,而不是视频流,编解码器和编写一个。因此,开发人员试图尽可能简化这部分。由于这个OpenCV视频容器只支持avi扩展,它的第一个版本。直接限制是您无法保存大于2 GB的视频文件。此外,您只能在容器内创建和展开单个视频轨道。此处没有音频或其他曲目编辑支持。然而,您系统上的任何视频编解码器都可能有效。如果您遇到其中一些限制,则需要查看更专业的视频编写库,如FFMpeg或编解码器,如HuffYUV,CorePNG和LCL。

本段所说的是,OpenCV的开发人员做出了一个设计选择,说你不能使用OpenCV编写大于2Gb的视频文件,原因是它是计算机视觉库而不是视频工具。

不幸的是,如果你想要写大于2Gb的视频,你将需要学习使用FFMPEG或类似的东西(它不是那么难,并且与OpenCV有很好的绑定)

答案 1 :(得分:2)

由于引入了<input type="text" size="9" maxlength="9" id="my_account" name="my_account" value="" pattern="^(?!(\d)\1*$)\d*">等支持大于2GB视频文件的新文件格式,因此在OpenCV 3.0中删除了此限制。

请参阅Does OpenCV 3.0 Still Has Limits On VideoWriter Size?

注意:文档和示例尚未更新,因此也许这应该被认为是实验性的。