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

Python OpenCV动态向视频添加文字:生成的MP4输出文件为空(0KB)的问题

解决OpenCV写入视频为空文件的问题

我刚看完你的代码,能正常显示带文字的视频但输出文件是0KB的问题,主要出在这几个关键细节上,咱们一步步来修复:

问题点分析

  • 忘记释放VideoWriter对象:你只释放了视频捕获的cap,但负责写入视频的out实例没有调用out.release(),这会导致缓冲区里的视频数据一直没写入磁盘,最终生成空文件。
  • VideoWriter尺寸与原视频不匹配:你固定写死了(640,480)的分辨率,但原视频的实际尺寸可能不是这个数值。OpenCV要求写入的每帧尺寸必须和初始化VideoWriter时的尺寸完全一致,否则会直接写入失败。
  • 颜色参数超出合法范围:cv.putText里的颜色是(B,G,R)格式,每个通道取值只能是0-255,你写的(0,640,480)超出了上限,虽然不影响文件写入,但会导致文字显示异常。
  • 未检查帧读取状态:循环里没判断ret的真假,当视频读取完毕或出错时,ret为False,此时frame是None,调用cv.putText会直接触发异常进入except块,这时候也没机会释放out。

修正后的代码

import cv2 as cv

# 修复路径:原路径末尾的反斜杠会转义单引号,这里调整写法
video_path = r'C:\Users\semnome\Desktop\automatizacoes\m\a.mp4'
cap = cv.VideoCapture(video_path)

# 动态获取原视频的关键参数:帧率、宽高
fps = cap.get(cv.CAP_PROP_FPS)
frame_width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))

fourcc = cv.VideoWriter_fourcc(*'mp4v')
# 用原视频的参数初始化VideoWriter,保证尺寸匹配
out = cv.VideoWriter('output.mp4', fourcc, fps, (frame_width, frame_height))

try:
    while cap.isOpened():
        ret, frame = cap.read()
        # 检查帧是否读取成功
        if not ret:
            print("视频已读取完毕或出现读取错误")
            break
        
        font = cv.FONT_HERSHEY_SIMPLEX
        # 修正颜色为合法范围的黄色(B=0, G=255, R=255)
        cv.putText(frame, 'TEXT ON VIDEO', (50, 50), font, 1, (0, 255, 255), 2, cv.LINE_4)
        out.write(frame)
        cv.imshow('video', frame)
        
        # 按q键退出循环
        if cv.waitKey(1) & 0xFF == ord('q'):
            break
finally:
    # 无论循环正常结束还是出错,都确保释放所有资源
    cap.release()
    out.release()  # 关键:必须释放VideoWriter才能完成文件写入
    cv.destroyAllWindows()

关键修正说明

  1. 路径修正:解决了原路径中反斜杠转义单引号的问题,确保能正确找到原视频文件。
  2. 动态参数获取:通过cap.get()获取原视频的真实帧率和分辨率,避免了尺寸不匹配导致的写入失败。
  3. 帧读取检查:添加if not ret的判断,避免处理无效的空帧。
  4. 资源安全释放:用finally块保证不管程序是否出错,都会释放所有捕获和写入对象,确保视频数据写入磁盘。
  5. 合法颜色值:调整文字颜色到0-255的合法范围,保证文字正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:57:40