利用Python编写简易的录制屏幕小工具

 更新时间:2022年08月01日 09:24:41   作者:Sir 老王  
这篇文章主要为大家详细介绍了如何利用Python语言编写一个简易的录制屏幕小工具,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下

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

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

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

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

2、代码

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

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

is_running = True

创建录制过程生成函数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()

创建键盘监听函数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

执行主函数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()

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

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

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

到此这篇关于利用Python编写简易的录制屏幕小工具的文章就介绍到这了,更多相关Python录制屏幕工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中Class类用法实例分析

    Python中Class类用法实例分析

    这篇文章主要介绍了Python中Class类用法,以实例形式较为详细的分析了Python中类的定义及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Python装饰器基础概念与用法详解

    Python装饰器基础概念与用法详解

    这篇文章主要介绍了Python装饰器基础概念与用法,结合实例形式详细分析了Python装饰器的概念、功能、用法及相关操作注意事项,需要的朋友可以参考下
    2018-12-12
  • Python中 map()函数的用法详解

    Python中 map()函数的用法详解

    map( )函数在算法题目里面经常出现,map( )会根据提供的函数对指定序列做映射,在写返回值等需要转换的时候比较常用。这篇文章主要介绍了Python中 map()的用法,需要的朋友可以参考下
    2018-07-07
  • 详解python string类型 bytes类型 bytearray类型

    详解python string类型 bytes类型 bytearray类型

    这篇文章主要介绍了python string类型 bytes类型 bytearray类型,需要的朋友可以参考下
    2017-12-12
  • Python的Random库的使用方法详解

    Python的Random库的使用方法详解

    这篇文章主要介绍了Python的Random库的使用方法详解,random库是使用随机数的Python标准库,python中用于生成伪随机数的函数库是random,需要的朋友可以参考下
    2023-07-07
  • Python抓取京东图书评论数据

    Python抓取京东图书评论数据

    最近接了个项目,需要抓取京东图书的评论,把代码放出来给大家分享下,希望能有所帮助
    2014-08-08
  • 如何使用Python对NetCDF数据做空间相关分析

    如何使用Python对NetCDF数据做空间相关分析

    这篇文章主要介绍了如何使用Python对NetCDF数据做空间相关分析,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python中对象的引用与复制的使用

    Python中对象的引用与复制的使用

    引用和复制是Python处理对象的重要概念,本文主要介绍了Python中对象的引用与复制的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Python中魔术方法的定义及一些常用方法

    Python中魔术方法的定义及一些常用方法

    所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,这篇文章主要给大家介绍了关于Python中魔术方法的定义及一些常用方法,需要的朋友可以参考下
    2024-02-02
  • python中将一个全部为int的list 转化为str的list方法

    python中将一个全部为int的list 转化为str的list方法

    下面小编就为大家分享一篇python中将一个全部为int的list 转化为str的list方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论