• python录制屏幕小工具,已调试成功运行


    由于最近测试需要录制系统界面的操作过程,因为都是全屏的操作,所以用python做一个简单的录屏小工具。

    实现过程也是比较简单,就是通过对屏幕操作进行不断的截图,最后将截图合成一个操作视频的过程。由于我们只是做简单的截屏功能,并没有加入音频效果。

    屏幕录制.gif

    1、准备

    开始之前我们还是按照以往的方式介绍一下使用到的第三方的python模块。

    from PIL import ImageGrab
    
    import numpy as np
    
    import cv2
    
    import datetime
    
    from pynput import keyboard
    
    import threading
    
    from loguru import logger
    
    import time
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    由于实现过程比较少,这里我们不再创建标准的class实现,直接在.py文件写相关的函数来实现。

    2、代码

    实现过程主要是通过两个函数来实现的,一个是实现具体的屏幕截图操作,并且将其写入视频。另一个则是用来监听键盘的输入,若是按下esc键时则退出当前的录制操作。

    初始化一个变量作为停止标志。

    is_running = True
    
    • 1

    创建录制过程生成函数generate_video,用以生成录制视频。

    def generate_video():
        '''
        生成录制视频函数
        :return:
        '''
        file_name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
        screen = ImageGrab.grab()
        width, height = screen.size
        fourcc = cv2.VideoWriter_fourcc(*'XVID')
        video = cv2.VideoWriter('%s.avi' % file_name, fourcc, 20, (width, height))
        for n in range(3):
            logger.debug(str(3 - n) + '秒后开始录制!')
            time.sleep(1)
        while True:
            im1 = ImageGrab.grab()
            im2 = cv2.cvtColor(np.array(im1), cv2.COLOR_RGB2BGR)
            video.write(im2)
            if is_running is False:
                logger.debug('屏幕录制已经结束!')
                break
        video.release()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    创建键盘监听函数press_keyboard,监听输入,若是按下esc键则改变运行状态。

    is_running=False
    def press_keyboard(key):
        '''
        键盘监听函数
        :param key:
        :return:
        '''
        global is_running
        if key == keyboard.Key.esc:
            logger.debug('ESC已经被按下,马上结束录制!')
            is_running = False
            return False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    执行主函数main,启动则执行屏幕录制。

    if __name__ == '__main__':
        thread_ = threading.Thread(target=generate_video)
        thread_.start()
        logger.debug(' 开始进入视频录制!')
        with keyboard.Listener(on_press=press_keyboard) as listener:
            listener.join()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后,使用pyinstaller将其打包成exe的可执行应用,使用时直接双击打开即可开始录制屏幕的操作过程。

    pyinstaller -i .\video.ico -Fw .\test2.py
    
    • 1

    至此,录制屏幕小工具就大功告成了。

  • 相关阅读:
    17、一起来学习MySQL 事务
    MySQL初学知识总篇
    Keepalived LVS群集
    基于LDABPSO算法的烟叶复烤配方关联特征挖掘
    IIC协议
    IPC protocol for local host
    idea配置tomcat热部署不生效问题
    CentOS 7 源码安装 Zabbix 6.0
    Linux下离线调试之coredump文件介绍
    【附源码】Python计算机毕业设计汽车租赁网站
  • 原文地址:https://blog.csdn.net/chengxuyuan_110/article/details/126062601