文/IT可达鸭

图/IT可达鸭、网络

写在前面

这次不蹭热点了,简简单单分享一个录屏软件的源码。我在阅读了近十多个录屏软件的源码后,发现这个是最简单,最好练手的一个源码。

为了便于理解,里面的一些不必要的代码我作了删减,主要是用来学习研究。

环境配置

python版本: 3.6.0

编辑器: pycharm

项目所需要的环境安装包

pip install numpypip install opencv-pythonpip install pillow需要注意的点

要先安装numpy,再安装opencv-python。

第一步:导包

time: 是一个时间包,其中time.sleep(n) 表示主线程睡眠 n 秒钟,子线程可以并发执行。

threading: 是一个关于线程操作的包,包括常用的线程函数、线程对象、锁、事件等。

cv2: 是一个强大的图像处理库 opencv, 据说人脸识别、视频处理等操作都可以做到。

numpy: 是一个扩展包,支持大量的维度数组与矩阵运算,包含大量数学函数。

PIL: 是一个图像处理标准库,一般和opencv一起用。

进程和线程简单介绍

什么是进程?举个例子,音乐播放器是一个进程,浏览器也是一个进程,互相不干扰。

什么是线程?音乐播放器中,音频播放是一个线程、歌词播放也是一个线程,它们之间有交流,保证歌词和音频同步播放。

第二步:录屏线程编写

写一个屏幕录制线程工具类,继承threading.Tread。重写__init__()方法,调用threading.Thread的__init__()方法。重写run()方法,不断截屏,并保存到video 对象中。利用 b_record 来控制是否停止录屏。这是一个线程开发的基本写法,只要涉及多线程,都可以这么写。

后续如果想加一个录制麦克风声音,可以写一个声音录制的线程类。

第三步:主函数

首先设定好录屏保存的路径,新建一个录屏对象。start()启动录制线程,time.sleep(10)表示主线程停留10秒,但是录屏线程依旧运行。直到主线程运行十秒后,运行 stop_record(),修改b_record 变量为Flase,录屏线程检测变化到就会立刻停止录屏,并输出保存视频文件。

完整代码# encoding:utf-8import timeimport threadingfrom cv2 import cv2import numpy as npfrom PIL import ImageGrabclass VideoCapThread(threading.Thread): def __init__(self, video_file='record.avi'): threading.Thread.__init__(self) self.b_record = True self.video = cv2.VideoWriter(video_file, cv2.VideoWriter_fourcc(*'XVID'), 32, ImageGrab.grab().size) # 帧率为32,可以调节 def run(self): while self.b_record: im = ImageGrab.grab() imm = cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR) self.video.write(imm) self.video.release() cv2.destroyAllWindows() def stop_record(self): self.b_record = Falseif __name__ == '__main__': avi_file = 'data/avi_tmp.avi' t1 = VideoCapThread(avi_file) t1.start() time.sleep(10) # 录制10s t1.stop_re

最后,附上完整代码。仅有三十多行,是不是非常简洁?其实,编程也没那么难。

结语

当然,距离完整的录屏软件还有很多东西可以做。如果有兴趣深究下去,可以在这个源码的基础上做优化和改进。例如,录制屏幕的分辨率设置、录屏位置坐标自由设置、增加UI界面(QtPython)、增加声音或者麦克风录制、视频音频合并(FFmpeg)等等。

python制作录屏软件_自制录屏软件,不到30行代码(仅供学习研究)相关推荐

  1. 淘宝抢购python代码-仅供学习

    淘宝抢购python代码-仅供学习 需要使用的python工具包有 from selenium import webdriver import datetime import time from se ...

  2. python 正方教务管理系统抢课脚本(仅供学习)

    正方教务管理系统抢课脚本 (仅供学习请勿它用!!!) 正方教务管理系统抢课脚本 进入正题 正方教务管理系统抢课脚本 该脚本使用python代码模拟发包实现.教务管理系统版本可能有所不同.请根据实际情况 ...

  3. python制作表白神器_程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫. 一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云. ...

  4. python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习

    python中利用turtle(海龟)绘图制作龟兔赛跑动画--仅供学习哦 首先,欢迎大家来我的博客当中浏览,由于我和我的可爱现在还都个初学者,所作的东西还不够完善,之前在学习计算机的各种语言的过程中, ...

  5. python海龟绘图颜色_python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习...

    python中利用turtle(海龟)绘图制作龟兔赛跑动画--仅供学习哦 首先,欢迎大家来我的博客当中浏览,由于我和我的可爱现在还都个初学者,所作的东西还不够完善,之前在学习计算机的各种语言的过程中, ...

  6. Python程序员30行代码素描表白!网友:花里胡哨

    总有人说程序员不够浪漫!其实我们只是没时间而已,等我们有时间了,还有普通人什么事儿?最近就有一个小伙伴上热搜了! 原来他用Python给可爱的女朋友画了一幅素描!不到30行代码,一起来学学给她一个惊喜 ...

  7. python你TM太皮了——区区30行代码就能记录键盘的一举一动

    先看看效果 Like This↓ 一.公共WiFi 公用电脑什么的 在我们日常在线上工作.玩耍时,不论开电脑.登录淘宝.玩网游 统统都会用到键盘输入 在几乎所有网站,例如淘宝.百度.126邮箱等等 为 ...

  8. 一个包含30行代码的Python项目:如何在您最喜欢的Twitcher流式传输时设置SMS通知...

    Hi everyone :) Today I am beginning a new series of posts specifically aimed at Python beginners. Th ...

  9. python爬虫爬取漫画(仅供学习)

    项目名: crawl_chuanwu 爬取链接:https://www.manhuadui.com/manhua/chuanwu/ 声明:本项目无任何盈利目的,仅供学习使用,也不会对网站运行造成负担. ...

  10. Python + Selenium + Chrome Driver 自动化点击+评论+刷弹幕(仅供学习)

    Python + Selenium + Chrome Driver 自动化点击 评论 刷弹幕 首先说明,这篇博文仅供学习!仅供学习!仅供学习! 不要拿去做其他事,封号概不负责!!! 突发奇想 首先先说 ...

最新文章

  1. 使用Python+OpenCV+GAN实现车牌图像增强
  2. python if语句能否判断中文,Python之判断语句(if语句)
  3. 登录屏幕上不要显示上次登录的用户名 图文教程[server 2003/2008]
  4. php 检查图片重复度,php – 检测图片的“整体平均”颜色
  5. linux常见问题及其解决方案集锦
  6. Flink专题-BaseTransform
  7. 【牛客 - 283H】图论一顿套模板(思维转化,Dijkstra)
  8. 短信语音验证码发展的必然趋势
  9. python @cached_property
  10. [LeetCode] 342. Power of Four(位操作)
  11. java中级项目案例_60个Java练手项目案例,看了让你茅塞顿开~
  12. 零基础如何学习C语言
  13. 手机12306买卧铺下铺技巧_购买火车票下铺实用技巧
  14. C语言银行账户管理系统
  15. 第3章 从零开始的计算机系统
  16. 软件License设计思路与实现方案
  17. uni-app云开发的网盘助手微信小程序源码
  18. eviews做回归分析时输出值的理解
  19. 圣天诺SuperPro狗模拟视频语音教程
  20. 北京2021年初雪即为暴雪

热门文章

  1. 计算机网络布线开题报告,网络综合布线开题报告.docx
  2. python端口扫描工具_基于Python的简易端口扫描器
  3. 阿里云云原生一体化数仓 - 数据安全能力解读
  4. 用C#打造quot;QQ对战平台挤房器quot;
  5. android 时间同步软件,Network Time(时间同步软件)
  6. 华为oj题目c语言,【华为OJ平台习题】
  7. 微型计算机中的存储容量1TB等于,自考计算机应用基础_通关宝典
  8. 计算机教室网络连接示意图,多媒体电教室解决方案
  9. 区块链入门笔记(五) —— 加密货币博弈论
  10. 啊哈算法(python)