录制计算机屏幕时,MSS会重复播放帧

时间:2019-05-13 23:26:09

标签: python opencv python-mss

我正在尝试在MacBook Pro上录制屏幕并将其存储在视频文件中。这不是最终目标,但这是第一步,我注意到我设定的写作帧率是什么,我在最终视频中只得到其中的一半。例如如果将其设置为30,我将获得以30fps保存的视频,但是每一帧都会重复。第1帧和第2帧相同,第3帧和第4帧相同;等等等等。所以我只有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函数,并且没有任何区别。有谁知道是什么原因导致了这种行为?

1 个答案:

答案 0 :(得分:0)

嗯,似乎这段代码可以正常工作。也许您可以尝试并发布视频以帮助我们了解您看到的内容?

Sub Test()
    Dim c As Range
    For Each c In Range("A3", Range("A3").End(xlDown))
        If c = c.Offset(1, 0) Or c = c.Offset(-1, 0) Then
           c.Interior.Color = 255
        End If
    Next c
End Sub