python实现屏幕视频录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现这条路是可以走的通的。分享一下自己的想法,整体思路是PIL模块中的ImageGrab不停的获得当前屏幕,利用opencv写入视频流话不多说,直接上代码,有什么更好的建议,欢迎大家交流!
"""python + opencv 实现屏幕录制_by-_Zjh_"""
from PIL import ImageGrab
import numpy as np
import cv2
p = ImageGrab.grab()#获得当前屏幕
k=np.zeros((200,200),np.uint8)
a,b=p.size#获得当前屏幕的大小
fourcc = cv2.VideoWriter_fourcc(*'XVID')#编码格式
video = cv2.VideoWriter('test.avi', fourcc, 16, (a, b))#输出文件命名为test.mp4,帧率为16,可以自己设置
while True:
im = ImageGrab.grab()
imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#转为opencv的BGR格式
video.write(imm)
cv2.imshow('imm', k)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video.release()
cv2.destroyAllWindows()
在停止录制的时候我自己采用的是opencv的q键盘退出,实际上还是会有个黑框弹出来,如果有更好的退出录制方式请留下您的建议,本次还有个不足的地方是没有增加录制声音的功能。最近事情太多了,等放假了出一个完整版的GUI程序。好了今天就先到这了,快要考线性系统这门课了,得开始复习了
最近接触了 pynput 这个强大的三方库,可以全局监听键盘、鼠标事件。把以前的屏幕录制的程序改进一下!请忽略以前的程序,直接看这个!
"""
python 屏幕录制改进版,无opencv黑框显示!
@zhou 2020/1/29_
"""
from PIL import ImageGrab
import numpy as np
import cv2
import datetime
from pynput import keyboard
import threading
flag=False #停止标志位
def video_record():
"""
屏幕录制!
:return:
"""
name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') #当前的时间
p = ImageGrab.grab() # 获得当前屏幕
a, b = p.size # 获得当前屏幕的大小
fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式
video = cv2.VideoWriter('%s.avi'%name, fourcc, 20, (a, b)) # 输出文件命名为test.mp4,帧率为16,可以自己设置
while True:
im = ImageGrab.grab()
imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#转为opencv的BGR格式
video.write(imm)
if flag:
print("录制结束!")
break
video.release()
def on_press(key):
"""
键盘监听事件!!!
:param key:
:return:
"""
#print(key)
global flag
if key == keyboard.Key.esc:
flag=True
print("stop monitor!")
return False #返回False,键盘监听结束!
if __name__=='__main__':
th=threading.Thread(target=video_record)
th.start()
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
现在录制就不用之前那个黑框了,按 esc按键 直接停止录制!
PS:在通过代码给大家介绍下python 实现屏幕录制
PIL 即pollow 的安装命令如下:
pip install pillow
其中cv2的安装是下面这条命令
pip install opencv-python
代码实现:
# coding: utf-8
from PIL import ImageGrab
import numpy as np
import cv2
fps = 20
start = 3 # 延时录制
end = 15 # 自动结束时间
curScreen = ImageGrab.grab() # 获取屏幕对象
height, width = curScreen.size
video = cv2.VideoWriter('video02.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (height, width))
imageNum = 0
while True:
imageNum += 1
captureImage = ImageGrab.grab() # 抓取屏幕
frame = cv2.cvtColor(np.array(captureImage), cv2.COLOR_RGB2BGR)
# 显示无图像的窗口
cv2.imshow('capturing', np.zeros((1, 255), np.uint8))
# 控制窗口显示位置,方便通过按键方式退出
cv2.moveWindow('capturing', height - 100, width - 100)
if imageNum > fps * start:
video.write(frame)
# 退出条件
if cv2.waitKey(50) == ord('q') or imageNum > fps * end:
break
video.release()
cv2.destroyAllWindows()
python实现屏幕视频录制_Python实现屏幕录制功能的代码相关推荐
- python log函数怎么打_Python的log日志功能及设置方法
python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客
- python 屏幕录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- python实现屏幕录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- win10怎么录制屏幕视频?电脑怎么进行屏幕录制? 电脑有自带的录屏功能吗
win10怎么录制屏幕视频?大部分人使用的电脑都是windows系统的,有人知道电脑怎么进行屏幕录制??小编接下来就给大家介绍几款实用的录屏软件. 软件一:Windows自带录屏 无论是工作还是生活, ...
- python 12306登录_Python 实现12306登录功能实例代码
下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse im ...
- python sftp_Python使用sftp实现上传和下载功能(实例代码)
在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能. 1.功能实现 根据输入参数判断是文件还是目录,进行上传和下载 本地参数local需要与远程参数remote类 ...
- python编程入门视频推荐_Python编程入门2021攻略,书籍推荐,视频推荐,每天更新...
写这篇文章的初衷 2018年我大学毕业,和很多人一样.大学里的世界,我也是整天LOL.打了4年,确还只是个黄金守门员.恋爱也想都不敢想.不过,话说回来,我拿了三年的奖学金.真的不是因为我学习认真,而是 ...
- python怎么去掉视频字幕_python实现去除下载电影和电视剧文件名中的多余字符的方法...
本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考.具体如下: 有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样) ...
- python怎么去掉视频字幕_Python实现视频语音和字幕自动审查功能
功能描述: 提取视频文件中的图像然后使用OCR技术识别静态图像中的文本,提取视频文件中的音频然后使用语音识别技术提取其中的文本,如果视频文本或音频文本中包含指定的关键词则进行提示. 代码使用tesse ...
最新文章
- PHP实现上一篇、下一篇
- Python 命名空间/名称查询 对效率的影响
- Windows服务启动进程----Cjwdev.WindowsApi.dll
- Dynamics CRMのアップデートインポートツール移植的准备步骤与有用的网页
- select标签中的选项分组
- c语言图片raw保存,求指导,如何用c语言实现读取*.raw格式图像
- Ubuntu 修改 hostname
- Linq 左连接 内连接
- 关于大小端、位域的一些概念详解
- java lambda表达式详解_java8新特性-Lambda表达式的详解(从0开始)
- StringBuffer 的 各种方法
- [Ruby] 类和容器
- Markdown 文档生成 PDF
- 0基础入门VTD-实操静态道路建模1
- Python必会内置函数
- PS填充颜色边缘模糊
- 使用k-means聚类anchors
- 算法基础17 —— 单调栈(Acwing 830 单调栈)
- 联通数科一面+二面+面谈 经验分享 base济南
- GitBook建立本地Book及导入别人Book
热门文章
- python画板——画樱花
- 微信CRM系统哪家好?
- 用MySQL表示学号_java习题:在MySQL数据库建立一个学生信息表(学号,姓名,班级,成绩),编程完成如下操作...
- win 7 安装python 失败 提示Service Pack 1
- 2022年四川省外贸综合服务企业认定材料流程
- 推荐一些实用的谷歌浏览器翻译插件
- 萨尔州大学计算机专业,萨尔大学介绍_QS世界排名_申请条件_优势专业-澳际留学网...
- 号称下一代互联网的 Web3.0 到底是个啥?
- 计算机函数公式大全ppt,三角函数公式大全分解.ppt
- android bootload漏洞,诺基亚 5/6 第一代 Bootloader 漏洞解锁方法 (测试)