我是一名业余程序员,正在尝试使用 python 在 Ubuntu 中制作屏幕录像机。使用此代码能够截取屏幕截图。
import wx
app = wx.App(False)
s = wx.ScreenDC()
w, h = s.Size.Get()
b = wx.EmptyBitmap(w, h)
m = wx.MemoryDCFromDC(s)
m.SelectObject(b)
m.Blit(0, 0, w, h, s, 0, 0)
m.SelectObject(wx.NullBitmap)
b.SaveFile("screenshot.png", wx.BITMAP_TYPE_PNG)
并使用循环拍摄更多照片并使用这些屏幕截图创建视频。我的代码如下所示,
import wx,os
app=wx.App(False)
s = wx.ScreenDC()
w, h = s.Size.Get()
b = wx.EmptyBitmap(w, h)
m = wx.MemoryDCFromDC(s)
i=0
while i<50:
m.SelectObject(b)
m.Blit(0, 0, w, h, s, 0, 0)
m.SelectObject(wx.NullBitmap)
b.SaveFile('{0:05d}.png'.format(i), wx.BITMAP_TYPE_PNG)
i+=1
os.system('ffmpeg -f image2 -r 8 -i %05d.png -vcodec mpeg4 -y movie1.mp4')
i=0
while i<50:
os.remove('{0:05d}.png'.format(i))
i += 1 `
在上面的代码中,我拍摄了 50 张图片并存储为 00000.png 到 00049.png 并使用 ffmpeg 制作视频。创建视频后,我删除所有图片。
当前问题:
- 屏幕拍摄之间的延迟非常小。如果尝试使用此代码录制视频,则输出并不完美。
- 录制时间长,效率不高。存储屏幕截图需要大量硬盘内存。并使用更多的CPU。
我做什么来让代码更有效率?使用纯python如何从图片创建视频?有没有其他方法来记录屏幕?我喜欢改进我的代码。