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

How to write avi file with OpenCV larger than 2 GB?

本文关键字:2GB avi 文件 大于 何使用 OpenCV      更新时间:2023-10-16

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

我正在使用编写.avi文件(将多个avi文件合并为一个)

cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]]) 

但最近发现我不能用它写大于2GB的.avi文件。它甚至在那里提到:由于这个视频容器的OpenCV只支持其第一个版本的avi扩展。这样做的一个直接限制是,您不能保存大于2 GB的视频文件。

但现在我没有时间学习像ffmpeg这样的新库,我需要做得很快。

我如何使用C++或Python编写这个文件,并了解OpenCV,或者至少使用输入部分-使用

cv::Mat 

作为帧

OpenCV 3.0中删除了此限制,因为引入了新的文件格式,如.mkv,后者确实支持大于2GB的视频文件。

请参阅OpenCV 3.0对VideoWriter大小仍有限制吗?。

注意:文档和示例还没有更新,所以也许这应该被认为是实验性的。

你已经回答了自己的问题,但我担心这不是你想要的答案。

从您的链接

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

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

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