我试图编写一个Python程序来记录 当前屏幕在OS X中以任意fps表示,例如60fps。
捕获我发现的当前屏幕的最快方法 正在使用subprocess.call([[“ screencapture”,“ pic.bmp”])。但 截屏花了大约0.16秒,所以我 依次拍摄屏幕截图,其帧速率不能超过6 fps。
相反,我尝试使用Python的multiprocessing.Process(第一次)通过以0.0167s的间隔启动新进程来制作屏幕截图,以制作60fps的视频。我首先尝试遵循以下代码:
from multiprocessing import Process
from subprocess import call
from PIL import Image
import time
def capture(file_name):
call(["screencapture", file_name])
p1=Process(target=capture, args=("f1",))
p1.start()
p2=Process(target=capture, args=("f2",))
p2.start()
我测试了上面的代码以拍摄2张屏幕图片,其中 Google的秒表正在运行。生成的两张图片显示间隔为0.05秒,最多仅为12 fps。
因为有像Monosnap这样的屏幕录制程序支持60fps,所以我想应该有一个更好的方法来做到这一点,而我正试图找到提高速度的方法。如何将间隔降低到0.0167秒或更短?
Edit1:这是一个更新,以回应声称这是Take screenshots **quickly** from python的可能副本。实际上,PyGTK sample的FionaSarah的解决方案来自原始问题的第一个链接。但是此解决方案似乎不适用于PyGObject的gi.repository中的当前版本的Gdk。 FionaSarah使用的gtk.gdk.Pixbuf.get_from_drawable在当前版本的Gdk中找不到。看来可以使用Gtk.OffscreenWindow来代替,或者应该使用this中的Xlib。