本文目录导读:

不一定非要用 PyAutoGUI,但它确实可以胜任简单的屏幕录制,让我给你详细对比几种方案:
PyAutoGUI 录制方案
PyAutoGUI 有 screenshot() 功能,可以配合 OpenCV 和 Pillow 实现录制:
import pyautogui
import cv2
import numpy as np
import time
# 获取屏幕尺寸
screen_size = pyautogui.size()
fps = 10 # 帧率
# 定义视频编码器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('screen_record.mp4', fourcc, fps, screen_size)
print("开始录制...")
time.sleep(2) # 延迟准备
try:
for _ in range(300): # 录制30秒 (fps=10)
img = pyautogui.screenshot()
frame = np.array(img)
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
out.write(frame)
if cv2.waitKey(1) == ord('q'):
break
finally:
out.release()
cv2.destroyAllWindows()
print("录制完成")
更好的替代方案
MSS (Multi-Screen Shot) ⭐推荐
比 PyAutoGUI 快10倍以上:
from mss import mss
import cv2
import numpy as np
with mss() as sct:
monitor = sct.monitors[1] # 主屏幕
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('record.mp4', fourcc, 20,
(monitor['width'], monitor['height']))
while True:
img = sct.grab(monitor)
frame = np.array(img)
frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
out.write(frame)
if cv2.waitKey(1) == ord('q'):
break
out.release()
PyAutoGUI vs MSS 性能对比
| 方法 | FPS (1920x1080) | CPU使用率 |
|---|---|---|
| PyAutoGUI | 5-10 FPS | 较高 |
| MSS | 60+ FPS | 较低 |
专业库推荐
pyautogui + Pillow:适合简单任务、学习用途 mss + cv2:适合日常录制需求 pyav (FFmpeg):专业级录制,可支持音频
# 安装
pip install av mss pillow
# 专业录制示例
import av
import mss
import numpy as np
container = av.open('output.mp4', mode='w')
stream = container.add_stream('libx264', rate=30)
with mss.mss() as sct:
monitor = sct.monitors[1]
while True:
img = sct.grab(monitor)
frame = av.VideoFrame.from_ndarray(
np.array(img), format='bgra'
)
for packet in stream.encode(frame):
container.mux(packet)
# 刷出缓冲
for packet in stream.encode():
container.mux(packet)
container.close()
建议:如果只是学习或简单需求,用 PyAutoGUI 没问题,但生产环境建议用 MSS 配合 OpenCV,性能好很多,而且代码复杂度差不多。