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

Python3 OpenCV图片合成视频无法打开、无画面问题咨询

问题描述

使用Python3搭配OpenCV实现图片合成视频功能时,运行脚本可正常生成视频文件,但打开文件时弹出 "The document could not be opened" 错误提示。

初始实现代码如下:

import cv2
import numpy as np
import glob

frameSize = (1920, 1080)

out = cv2.VideoWriter('output_video.avi',cv2.VideoWriter_fourcc(*'DIVX'), 60, frameSize)

for filename in glob.glob('/folder_path/*.jpg'):
   img = cv2.imread(filename)
   out.write(img)

out.release()

问题更新

替换编码器配置,使用MJPG编码器初始化代码:

out = cv2.VideoWriter('output_video.avi',cv2.VideoWriter_fourcc(*'MJPG'), 60, frameSize)

替换原有DIVX编码器配置后,视频可被播放器唤起,但播放时无任何画面显示。


故障原因与修复方案

该类问题90%以上的核心诱因是写入视频的图片分辨率与初始化VideoWriter时设置的frameSize不匹配,其余常见诱因包括文件读取顺序异常、损坏图片未做校验、编码器兼容性不足,按以下规则修复即可:

  • 强制统一所有输出帧的尺寸
    代码中硬编码输出分辨率为(1920,1080),只要目标文件夹内存在任意一张jpg分辨率不符合该值,写入的视频就会出现文件损坏、无法打开、播放黑屏的问题。写入帧前必须将所有图片强制缩放到指定输出尺寸,同时增加读取失败校验,避免单张损坏图片导致整个视频文件异常。
  • 修正图片读取顺序
    glob默认的读取顺序不遵循文件名数字排序规则,会出现10.jpg排在2.jpg之前的问题,该问题不会导致黑屏,但会造成视频帧顺序错乱,需要对读取到的路径列表做排序处理。
  • 更换兼容性更好的编码器
    Windows平台下DIVX、MJPG编码器兼容性较差,优先选择XVID编码生成avi文件,或使用avc1编码生成mp4文件,可适配绝大多数主流播放器,避免无法唤起播放的问题。

修复后的可直接运行参考代码:

import cv2
import glob

# 输出视频参数配置
output_path = 'output_video.avi'
frame_size = (1920, 1080)
fps = 60
# 选用兼容性更强的XVID编码器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter(output_path, fourcc, fps, frame_size)

# 按文件名排序图片路径,避免帧顺序错乱
img_path_list = sorted(glob.glob('/folder_path/*.jpg'))

for img_path in img_path_list:
    frame = cv2.imread(img_path)
    # 跳过无法读取的损坏图片
    if frame is None:
        print(f"跳过无效图片: {img_path}")
        continue
    # 强制将帧缩放到设定的输出分辨率,是解决文件损坏、黑屏问题的核心步骤
    frame = cv2.resize(frame, frame_size)
    video_writer.write(frame)

video_writer.release()

如果运行后仍存在播放器兼容问题,可将输出文件后缀改为.mp4,编码器替换为cv2.VideoWriter_fourcc(*'avc1'),生成的H.264编码视频可兼容全平台几乎所有主流播放器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:15:28