由于最近测试需要录制系统界面的操作过程,因为都是全屏的操作,所以用python做一个简单的录屏小工具。
实现过程也是比较简单,就是通过对屏幕操作进行不断的截图,最后将截图合成一个操作视频的过程。由于我们只是做简单的截屏功能,并没有加入音频效果。
1、准备
开始之前我们还是按照以往的方式介绍一下使用到的第三方的python模块。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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键时则退出当前的录制操作。
初始化一个变量作为停止标志。
1
|
is_running = True |
创建录制过程生成函数generate_video,用以生成录制视频。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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键则改变运行状态。
1
2
3
4
5
6
7
8
9
10
11
12
|
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,启动则执行屏幕录制。
1
2
3
4
5
6
|
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的可执行应用,使用时直接双击打开即可开始录制屏幕的操作过程。
1
|
pyinstaller -i .\video.ico -Fw .\test2.py |
至此,录制屏幕小工具就大功告成了。
到此这篇关于利用Python编写简易的录制屏幕小工具的文章就介绍到这了,更多相关Python录制屏幕工具内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://mp.weixin.qq.com/s/Dt0obCVDS9KN_K4uYxgpwQ