You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python+OpenCV合成截图视频:如何缩小AVI文件至接近PNG总大小?

解决OpenCV合成视频体积过大的问题

你当前代码里cv2.VideoWriter的第二个参数传了0,这会让OpenCV使用未压缩的视频格式(比如RAW),完全没有压缩,所以生成的AVI体积远大于原PNG总和。PNG本身是带压缩的图片格式,而未压缩视频会把每帧都存成原始像素数据,体积自然暴涨。

方案1:给AVI文件指定压缩编码(XVID)

AVI格式支持XVID编码,这是一种高效的MPEG-4压缩编码,能大幅降低体积。修改VideoWriter的初始化代码,指定对应的fourcc编码:

将原代码中这一行:

video = cv2.VideoWriter("movies/" + video_name, 0, 1, (width, height))

替换为:

# 指定XVID编码(适配AVI格式)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video = cv2.VideoWriter("movies/" + video_name, fourcc, 1, (width, height))

修改后生成的AVI文件会用XVID压缩,体积会接近原PNG总和(或略大,视频压缩算法与图片压缩逻辑不同,但不会出现几百倍的体积差)。

方案2:生成MP4格式(推荐,体积更小)

AVI格式的压缩效率不如MP4,若能接受MP4格式,用H.264编码(avc1或mp4v)能得到更小的体积:

  1. 修改视频文件名后缀为.mp4:
video_name = image_folder.split("/")[-2] + ".mp4"
  1. 初始化VideoWriter时指定H.264编码:
# 使用H.264编码(适配MP4格式)
fourcc = cv2.VideoWriter_fourcc(*'avc1')  # 若报错可替换为*'mp4v',取决于OpenCV支持情况
video = cv2.VideoWriter("movies/" + video_name, fourcc, 1, (width, height))

注意事项

  • 确保OpenCV支持对应编码:部分精简版OpenCV未集成ffmpeg,会导致压缩编码无法使用。若出现报错,可安装完整版本:pip install opencv-python-full
  • 帧率参数:当前设置为1fps,若需要更快的播放速度可调整数值(比如10、24),该参数不会直接影响视频体积(体积主要由编码和分辨率决定)

完整修改后代码示例(AVI+XVID)

import os
import cv2

def movie(image_folder):
    video_name = image_folder.split("/")[-2] + ".avi"

    # 查找并排序PNG图片
    images = sorted([img for img in os.listdir(image_folder) if img.endswith(".png")])
    if not images:
        print("未找到PNG图片")
        return

    # 获取第一帧的尺寸信息
    frame = cv2.imread(os.path.join(image_folder, images[0]))
    height, width, layers = frame.shape

    # 初始化带XVID压缩的视频写入器
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    video = cv2.VideoWriter("movies/" + video_name, fourcc, 1, (width, height))

    for image in images:
        file_path = os.path.join(image_folder, image)
        frame = cv2.imread(file_path)
        if frame is not None:  # 确保图片读取成功
            video.write(frame)

    video.release()
    cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者user11419808

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:46:30