目录
-
目录
-
应用平台
-
屏幕录制部分
-
计算视频最优fps及使用numpy计算中间帧数组
-
使用pynput监听键盘按键
-
如何保存MP4格式视频
-
源码
-
总结
最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用python如何做屏幕录制工具的系列文章:
-
录制屏幕制作视频
-
录制音频
-
合成视频,音频
-
基于pyqt5制作可视化窗口
大概上述四个部分,希望自己能够尽快完善,接下来开始使用python制作屏幕录制部分。
应用平台
-
windows 10
-
python 3.7
屏幕录制部分
屏幕录制可以简单地理解为将屏幕快照以动图的形式播放,这里我选用PIL下的ImageGrab来截取屏幕画面,首先pip install Pillow
之后需要将截取到的快照数组合成为视频,使用cv2模块pip install opencv-python
ImageGrab类不能直接存储为视频,使用numpy模块进行数组化,再通过cv2.COLOR_BGR2RGB转换为cv2色彩通道。pip install numpy
屏幕录制主要代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import numpy as np from PIL import ImageGrab import cv2 im = ImageGrab.grab() width, high = im.size # 获取屏幕的宽和高 fourcc = cv2.VideoWriter_fourcc(*'I420') # 设置视频编码格式 fps = 15 # 设置帧率 video = cv2.VideoWriter('test.avi', fourcc, fps, (width, high)) while True: # 开始录制 im = ImageGrab.grab() im_cv = cv2.cvtColor(np.array(im), cv2.COLOR_BGR2RGB) # 图像写入 video.write(im_cv) if xx: # 当某某条件满足中断循环 break video.release() # 释放缓存,持久化视频
测试运行可以保存屏幕快照为视频,但操作起来不优雅,也不利于后续的操作。
封装成类,继承线程父类,方便使用键盘来控制视频录制的结束。
复制代码
1
2
3
4
5
6
7
8from threading import Thread class ScreenshotVideo(Thread): def __init__(self): """初始化参数""" super().__init__()
详细代码将在文末给出。
计算视频最优fps及使用numpy计算中间帧数组
实际操作中视频录制在不同电脑中会出现不一样的帧率,
最后
以上就是鲤鱼御姐最近收集整理的关于手把手教你使用opencv-python库制作屏幕录制工具(附源码)的全部内容,更多相关手把手教你使用opencv-python库制作屏幕录制工具(附源码)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复