📌  相关文章
📜  使用Python创建屏幕录像机(1)

📅  最后修改于: 2023-12-03 15:06:53.254000             🧑  作者: Mango

使用Python创建屏幕录像机

屏幕录像机(Screen Recorder)是一款非常实用的工具,可以记录电脑屏幕上的所有动作,通常用于创建演示文稿、制作教学视频等。使用Python创建屏幕录像机可以让您更加灵活地控制录像过程,同时可以根据自己的需求自由定制录像功能。

所需工具
  • OpenCV库:用于捕获屏幕图像
  • Pillow库:用于将捕获的图像转换为视频
  • NumPy库:用于图像数据处理

您可以在命令提示符或终端中使用以下命令安装这些库:

pip install opencv-python
pip install pillow
pip install numpy
实现过程
步骤1:导入库

首先,我们需要导入上述所需的库:

import cv2
from PIL import ImageGrab
import numpy as np
步骤2:设置录像参数

接下来,我们需要设置录像的一些参数,比如帧率、屏幕大小等。您可以根据自己的需求自由更改这些参数。

# 录像帧率(Frames per second)
fps = 24.0

# 录像的屏幕大小(Screen Size)
screen_size = (1920, 1080)

# 编码类型
fourcc = cv2.VideoWriter_fourcc(*"mp4v")

# 输出视频文件保存路径
output_path = "output.mp4"
步骤3:设置视频输出对象

为了将捕捉的图像写入视频文件,我们需要创建一个cv2.VideoWriter对象:

output = cv2.VideoWriter(output_path, fourcc, fps, screen_size)
步骤4:开始录像

现在,我们可以开始录制屏幕了。可以使用以下代码来捕获屏幕图像并写入视频文件:

while True:
    # 捕获屏幕图像
    img = ImageGrab.grab(bbox=(0, 0, screen_size[0], screen_size[1]))
    
    # 将图像转换为OpenCV格式
    img_np = np.array(img)
    img_np = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
    
    # 写入视频文件
    output.write(img_np)
    
    # 在屏幕上显示录制的图像
    cv2.imshow("Screen Recorder", img_np)
    
    # 按下'q'键停止录制
    if cv2.waitKey(1) == ord("q"):
        break
步骤5:结束录像

最后,我们需要释放视频输出对象并关闭所有窗口:

# 释放输出对象
output.release()

# 关闭所有窗口
cv2.destroyAllWindows()
完整代码

下面是完整的屏幕录像机代码:

import cv2
from PIL import ImageGrab
import numpy as np

# 录像帧率
fps = 24.0

# 录像的屏幕大小
screen_size = (1920, 1080)

# 编码类型
fourcc = cv2.VideoWriter_fourcc(*"mp4v")

# 输出视频文件保存路径
output_path = "output.mp4"

# 设置视频输出对象
output = cv2.VideoWriter(output_path, fourcc, fps, screen_size)

# 开始录制
while True:
    # 捕获屏幕图像
    img = ImageGrab.grab(bbox=(0, 0, screen_size[0], screen_size[1]))
    
    # 将图像转换为OpenCV格式
    img_np = np.array(img)
    img_np = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
    
    # 写入视频文件
    output.write(img_np)
    
    # 在屏幕上显示录制的图像
    cv2.imshow("Screen Recorder", img_np)
    
    # 按下'q'键停止录制
    if cv2.waitKey(1) == ord("q"):
        break

# 结束录制
output.release()
cv2.destroyAllWindows()

结束录制