本文目录导读:

不一定非要用 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,性能好很多,而且代码复杂度差不多。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播