【问题标题】:How to write avi file with OpenCV larger than 2 GB?如何使用大于 2 GB 的 OpenCV 编写 avi 文件?
【发布时间】:2016-02-17 10:04:02
【问题描述】:

我在 Python 中使用 OpenCV,但实际上可以切换到 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 这样的新库,我需要非常快地完成它。

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

cv::Mat 

作为框架

【问题讨论】:

  • 作为一种快速破解方法,您可以将每一帧保存为具有连续编号的图像,并使用VirtualDub 等工具从图像序列中使用您喜欢的编解码器制作视频。图像序列将占用大量磁盘空间,但您无需学习任何新内容。

标签: python c++ opencv video ffmpeg


【解决方案1】:

由于引入了新的文件格式,例如 .mkv,该限制已在 OpenCV 3.0 中移除,它们确实支持大于 2GB 的视频文件。

Does OpenCV 3.0 Still Has Limits On VideoWriter Size?

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

【讨论】:

    【解决方案2】:

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

    来自您的链接

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

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

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

    【讨论】:

    • 奇怪的是,我刚刚用 OpenCV 的 VideoWriter 创建了一个未压缩的 avi 文件,大小为 8 GB。这有点奇怪(ffmpeg 发现的帧比 Totem 和 VLC 播放的帧多),但文件大小对我来说似乎不是问题。
    猜你喜欢
    • 2019-05-17
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多