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

OpenCV无法生成MP4视频文件问题求助

解决OpenCV无法生成MP4文件(0KB)的问题

以下是几个针对性的解决方法,按优先级尝试:

  • 更换MP4兼容的编码格式
    部分OpenCV版本对mp4v编码的支持存在兼容性问题,MP4容器更推荐使用H.264编码(对应avc1或H264)。替换你的fourcc配置:

    fourcc = cv2.VideoWriter_fourcc(*'avc1')
    video_writer = cv2.VideoWriter(video_path, fourcc, 30, (width, height))
    for frame in frames:
        video_writer.write(frame)
    video_writer.release()
    
  • 确认OpenCV的FFmpeg依赖是否生效
    手动下载FFmpeg不代表OpenCV能正确调用它,先检查你的OpenCV是否编译时包含FFmpeg支持:

    print(cv2.getBuildInformation())
    

    在输出中查找FFmpeg项,若显示NO,说明当前版本不支持,需重新安装带FFmpeg的OpenCV:

    pip uninstall opencv-python
    pip install opencv-python-headless  # 无GUI需求用这个,有需求换opencv-python
    
  • 校验帧的尺寸与格式
    如果帧的尺寸和VideoWriter初始化时的(width, height)不匹配,会导致写帧失败,最终生成0KB文件。添加校验逻辑:

    for frame in frames:
        # OpenCV帧的shape是(height, width, channels),注意顺序
        if frame.shape[:2] == (height, width):
            video_writer.write(frame)
        else:
            print(f"跳过尺寸不匹配的帧:当前{frame.shape[:2]},预期({height}, {width})")
    

    另外确保帧是OpenCV默认的BGR格式,若为RGB需转换:frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

  • 指定FFmpeg作为API后端
    强制OpenCV使用FFmpeg后端处理视频写入,在创建VideoWriter时添加参数:

    video_writer = cv2.VideoWriter(video_path, fourcc, 30, (width, height), apiPreference=cv2.CAP_FFMPEG)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:13:12