gpt4 book ai didi

python - 录制电脑屏幕时 MSS 重复帧

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:31 24 4
gpt4 key购买 nike

我正在尝试在我的 MacBook pro 上录制屏幕并将其存储在视频文件中。这不是最终目标,但这是第一步,我注意到无论我将写作帧率设置为什么,在我的最终视频中我只能得到一半。例如如果我将它设置为 30,我会得到一个以 30fps 保存的视频,但每一帧都会重复。第一帧和第二帧是一样的,第三帧和第四帧是一样的;等等等等。所以我只得到 15 帧。

我已经尝试将帧率设置为 60 或 120,结果相同。而当我使用专业实用程序(如 QuickTime)录制屏幕时,我得到了应有的录制效果,没有重复的帧等。

import numpy as np
import cv2
from mss import mss
from PIL import Image

bbox = {'top': 270, 'left': 100, 'width': 600, 'height': 150}

sct = mss()

#fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('/Users/vipulrajan/Downloads/DinoGame/output.avi',cv2.VideoWriter_fourcc(*'XVID'), 60.0, (1200,300), isColor=0)

while 1:

sct_img = sct.grab(bbox)
im = np.array(sct_img)[:,:,2] #converting the image to grayscale

out.write(im)

我还尝试在代码中添加和删除 cv2.waitKey 函数,但没有任何区别。有谁知道可能导致此行为的原因是什么?

最佳答案

嗯,这段代码似乎按预期工作。或许您可以尝试一下并发布视频以帮助我们了解您所看到的内容?

import time

import cv2
import numpy as np
from PIL import Image
from mss import mss

frame_rate = 30
width, height = 600, 150
out = cv2.VideoWriter('output.avi',
cv2.VideoWriter_fourcc(*'XVID'),
frame_rate,
(width, height),
isColor=0)
bbox = {'top': 270, 'left': 100, 'width': width, 'height': height}

with mss() as sct:
start = time.monotonic()
while 'capturing':
im = np.array(sct.grab(bbox))[:,:,2] # Convert to grayscale
out.write(im)
time.sleep(1 / frame_rate)

if time.monotonic() - start > 3: # 3 seconds
break

out.release()

关于python - 录制电脑屏幕时 MSS 重复帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com