【问题标题】:How can I make cv2.VideoWriter lighter如何使 cv2.VideoWriter 更轻
【发布时间】:2020-10-10 06:01:40
【问题描述】:

我正在做一个项目,我需要使用 opencv 对视频文件执行一些操作。 我注意到的一个大问题是我使用 cv2.VideoWriter 创建的视频文件非常大。

例如,当我执行视频稳定时,我的输入视频为 10MB,而我创建的输出视频甚至可以达到 80MB,尽管具有相同的 fps、相同的帧数。输入输出都是彩色的,输入输出都是AVI格式等等……

这是 cv2.VideoWriter 的已知功能吗?或者有什么方法可以让输出视频变小?

【问题讨论】:

  • 你在做什么操作?一些处理可以为您的图像添加更多颜色,这将使每帧的文件大小更大。此外,输入帧可能是 8 位颜色,但您的处理会将它们更改为 24 位或 32 位颜色。
  • 我正在做稳定和对象跟踪(分别)。更改帧后,我总是将它们转换为 uint8(因为 videowriter 只接受 uint8 和 uint64)。
  • 但是稳定和跟踪对图像做了什么样的处理呢?如果输入是 8 位颜色而输出是 24 位颜色,那么保存为 uint8 将无济于事。视频帧的尺寸是否改变?检查输入和输出中唯一颜色的数量。
  • 您应该提供minimal reproducable code 以便我们更好地检测问题。我认为这个问题与您使用的编解码器有关。见stackoverflow.com/questions/41966372/…
  • cv2.VideoWriter 并非针对大小进行优化。众所周知,输出大小是臃肿的。人们通常做的是通过 FFMPEG 或 HandBrake 转换输出视频以减小大小。更好的是,将帧数据直接通过管道传输到 FFMPEG,完全绕过cv2.VideoWriter 步骤:stackoverflow.com/questions/34167691/…。您也可以使用同一篇文章中的VidGear。我还没有尝试过,但它看起来很有希望

标签: python opencv


【解决方案1】:

使用ffmpeg可以解决问题。

ffmpeg -i output.mp4 output_light.mp4 

这种简单的方法大致将视频的大小缩小了大约 1/3。

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 2019-04-09
    • 2018-12-08
    • 2020-07-30
    • 2012-03-06
    • 2018-09-09
    • 2019-05-10
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多