屏幕录制:如何用Python记录你的屏幕?代码实现示例

2021年11月17日14:38:12 发表评论 987 次浏览
Python如何录制屏幕?本文教你使用 pyautogui 和 OpenCV 录制显示屏幕视频并将其保存到 Python 文件中。 屏幕录制使你能够创建演示视频、记录游戏成就以及创建可在社交媒体上在线共享的视频。有许多工业软件可以帮助你很容易地做到这一点。在本教程中,你将学习如何使用 Python 制作你自己的简单屏幕录像机,你可以进一步扩展以满足你自己的需求。 相关: 如何使用隐写术在 Python 中隐藏图像中的秘密数据。 让我们开始Python录制屏幕示例吧,首先,安装本教程所需的依赖项:
pip3 install numpy opencv-python pyautogui
如何用Python记录屏幕?过程如下:
  • 使用pyautogui捕获屏幕截图。
  • 将该屏幕截图转换为numpy数组。
  • 使用OpenCV 中的视频编写器将该numpy数组写入具有正确格式的文件。
导入必要的模块:
import cv2
import numpy as np
import pyautogui
让我们初始化用于编写视频文件的格式(名为“output.avi”):
# display screen resolution, get it from your OS settings
SCREEN_SIZE = (1920, 1080)
# define the codec
fourcc = cv2.VideoWriter_fourcc(*"XVID")
# create the video write object
out = cv2.VideoWriter("output.avi", fourcc, 20.0, (SCREEN_SIZE))
注意:你需要从操作系统中获取正确SCREEN_SIZE的屏幕分辨率,否则写入文件将不起作用(或者,你可以使用pyautogui.size()函数来获取主显示器的大小)。 Python如何录制屏幕?Fourcc是OpenCV将用来编写视频文件的视频编解码库,我们在这里指定了XVID。的20.0作为第三个参数,以传递浮点值cv2.VideoWriter对应于FPS(FRAME FER SEcond)。 Python录制屏幕示例介绍:现在我们需要继续捕获屏幕截图并循环写入文件,直到用户单击“q”按钮,这是主循环:
while True:
    # make a screenshot
    img = pyautogui.screenshot()
    # convert these pixels to a proper numpy array to work with OpenCV
    frame = np.array(img)
    # convert colors from BGR to RGB
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    # write the frame
    out.write(frame)
    # show the frame
    cv2.imshow("screenshot", frame)
    # if the user clicks q, it exits
    if cv2.waitKey(1) == ord("q"):
        break

# make sure everything is closed when exited
cv2.destroyAllWindows()
out.release()
首先,我们使用screenshot()函数返回一个图像对象,因此我们需要将其转换为适当的numpy数组。之后,我们需要将该帧转换为RGB,这是因为OpenCV默认使用BGR。 如何用Python记录屏幕?正如pyautogui 的官方文档中所述,你还可以通过传递region关键字参数来仅记录屏幕的区域,该参数是一个四整数元组,表示要捕获的区域的顶部左侧宽度 高度 ,这是它的方式完毕:
img = pyautogui.screenshot(region=(0, 0, 300, 400))
录制完成后,只需单击“q”,它就会破坏窗口并完成写入文件,试试吧! 此外,你可以用循环替换该while True语句,for如下Python录制屏幕示例所示:
for i in range(200):
    # make a screenshot
    img = pyautogui.screenshot()
    # the rest of the code...
这将记录你的屏幕10秒,那是因为我们将 FPS 设置为20(这是有道理的,因为200是20乘以10) Python如何录制屏幕?你可以使用无穷无尽的想法来扩展它。例如,你可以将其与录音机结合使用,你将获得一个同时记录屏幕和语音的 Python 工具,你将需要使用一个记录音频的线程和另一个用于屏幕记录器的线程,让我们知道你在下面的评论中取得了进步! 或者你可以创建开始、暂停和停止录制的键盘快捷键,本教程可以帮助你。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: