首页 > 解决方案 > 无法读取 cv2.VideoWriter 创建的 avi 文件

问题描述

一切似乎都写入了我的 avi 文件 output.avi(它比我启动程序之前大)但由于错误 0xc10100be 我无法打开它。我将如何尝试使文件可读?我对 python 也很有经验,但 openCV 对我来说是新的。

提前致谢!代码:

import psutil
import time
import cv2
import wx
import pyautogui
import numpy as np
import subprocess as sp

running = True
while True:
    if "League of Legends (TM) Client" in (p.name() for p in psutil.process_iter()):
        app = wx.App(False)
        SCREEN_SIZE = wx.GetDisplaySize()
        SCREEN_SIZE = tuple(SCREEN_SIZE)
        fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
        out = cv2.VideoWriter("output.avi", fourcc, 20.0, SCREEN_SIZE)
        ffmpeg = 'FFMPEG'
        dimension = '{}x{}'.format(SCREEN_SIZE[0], SCREEN_SIZE[1])
        f_format = 'bgr24'
        fps = str(out.get(cv2.CAP_PROP_FPS))

        command = [ffmpeg,
                    '-y',
                   '-f', 'rawvideo',
                   '-vcodec', 'rawvideo',
                   '-s', dimension,
                   '-pix_fmt', 'bgr24',
                   '-r', fps,
                   '-i', '-',
                    '-an',
                   '-vcodec', 'mpeg4',
                   '-b:v', '5000k',
                   "output.avi"]
        proc = sp.Popen(command, stdin=sp.PIPE, stderr=sp.PIPE)
        while True:
            img = pyautogui.screenshot()
            frame = np.array(img)
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            out.write(frame)
    time.sleep(5)

cv2.destroyAllWindows
out.release()

标签: pythonpython-3.xopencv

解决方案


推荐阅读