更新时间:2020年03月02日 13:59:52 作者:linnahan https://www.jb51.net/article/181757.htm

import time,threading

from datetime import datetime

from PIL import ImageGrab

from cv2 import *

import numpy as np

from pynput import keyboard

def video_record(): # 录入视频

global name

name = datetime.now().strftime('%Y-%m-%d %H-%M-%S') # 当前的时间(当文件名)

screen = ImageGrab.grab() # 获取当前屏幕

width, high = screen.size # 获取当前屏幕的大小

fourcc = VideoWriter_fourcc('X', 'V', 'I', 'D') # MPEG-4编码,文件后缀可为.avi .asf .mov等

video = VideoWriter('%s.avi' % name, fourcc, 15, (width, high)) # (文件名,编码器,帧率,视频宽高)

print('3秒后开始录制----') # 可选

time.sleep(3)

print('开始录制!')

global start_time

start_time = time.time()

while True:

if flag:

print("录制结束!")

global final_time

final_time = time.time()

video.release() #释放

break

im = ImageGrab.grab() # 图片为RGB模式

imm = cvtColor(np.array(im), COLOR_RGB2BGR) # 转为opencv的BGR模式

video.write(imm) #写入

# time.sleep(5) # 等待5秒再次循环

def on_press(key): # 监听按键

global flag

if key == keyboard.Key.home:

flag = True # 改变

return False # 返回False,键盘监听结束!

def video_info(): # 视频信息

video = VideoCapture('%s.avi' % name) # 记得文件名加格式不要错!

fps = video.get(CAP_PROP_FPS)

Count = video.get(CAP_PROP_FRAME_COUNT)

size = (int(video.get(CAP_PROP_FRAME_WIDTH)), int(video.get(CAP_PROP_FRAME_HEIGHT)))

print('帧率=%.1f'%fps)

print('帧数=%.1f'%Count)

print('分辨率',size)

print('视频时间=%.3f秒'%(int(Count)/fps))

print('录制时间=%.3f秒'%(final_time-start_time))

print('推荐帧率=%.2f'%(fps*((int(Count)/fps)/(final_time-start_time))))

if name == 'main':

flag = False

th = threading.Thread(target=video_record)

th.start()

with keyboard.Listener(on_press=on_press) as listener:

listener.join()

time.sleep(1) # 等待视频释放过后

video_info()

python实现录屏功能(亲测好用)的更多相关文章

  1. 简析hotjar录屏功能实现原理

    简析hotjar录屏功能实现原理 众所周知,hotjar中录屏功能是其重要的一个卖点,看着很牛X酷炫的样子,今天就简单的分析一下其可能实现(这里只根据其请求加上个人理解分析,并不代表hotjar中真实 ...

  2. iOS的录屏功能

    iOS的录屏功能其实没什么好说的,因为网上的教程很多,但是网上的Demo无一例外几乎都有一个bug,那就是iPad上会出现闪退,这也体现了国内的教程文档的一个特点,就是抄袭,教程几乎千篇一律,bug也 ...

  3. 【转载】华为荣耀V9的手机录屏功能如何开启

    手机录屏有时候对我们的帮助很大,例如可以录制相应的APP使用教程.微信小程序使用流量讲解视频等,针对于软件开发人员等来说,手机录屏功能针对功能演示视频非常的有帮助.在华为荣耀V9手机中,进行手机录屏有 ...

  4. 原生 js 录屏功能

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  5. CentOS 6.5升级Python和安装IPython(亲测可用)

    python的升级(2.6------>2.7.x) 如下地址:http://note.youdao.com/share/?id=2928aeda020123bfdf2a2c76bc75e4a7 ...

  6. 利用PyInstaller将python代码封装成EXE(亲测可用)

    有些不能成功,有些不全的,下面总结一下,给自己以后看看.   1下载PyInstaller..去官网下载http://www.pyinstaller.org/(我下载的版本)   2不需要安装,解压即 ...

  7. Python模拟微博登陆,亲测有效

    今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密.那么首先就要做那件必做之事!模拟登陆-- 代码是参考了:https://www.douban.com/note/201767245/ 我对代码 ...

  8. QT+OPENCV实现录屏功能

    本文使用QT+opencv来实现对指定窗体画面录制,并保存为avi文件. (1)获取窗体界面 QScreen类有一个grabWindow函数,可以用来获取窗体的画面,这个函数使用很简单,就是传入窗体句 ...

  9. jmeter 执行python脚本的方法 。(亲测ok)

    jmeter 执行python脚本   jmeter 可以通过Jython 执:行python代码 1.下载Jython jar包:http://www.jython.org/downloads.ht ...

  10. Appium+python自动化29-toast消息(亲测 ok)

    本篇转自博客:上海-悠悠 前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到. 一. Supported P ...

随机推荐

  1. python调用C库的方法

    主要介绍两种,一种是python的标准库内置的ctype,另一种是第三方的pybind11. 除此之外,还有其他的方案,例如,CFFI.Cython等等. 一.python的标准库ctype

  2. win11 改键盘映射

    编辑注册表:按下win+r,输入regedit找到这个路径HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Keyboard Layout ...

  3. 必备技能,MySQL 查找并删除重复行

    本文讲述如何查找数据库里重复的行.这是初学者十分普遍遇到的问题.方法也很简单.这个问题还可以有其他演变,例如,如何查找"两字段重复的行"(#mysql IRC 频道问到的问题) 如 ...

  4. SqlSugar 代码生成 数据库及表

    在实际开发中如何在sqlsugar中通过model生成数据表呢? 废话不说上代码 一.引入sqlsugarcore 二.编写Model代码 先写一个model举例 namespace 用户管理.Mod ...

  5. Django新版本报错问题解决

    在创建app的时候会报如下错误: python3 manage.py startapp test django.core.exceptions.ImproperlyConfigured: SQLite ...

  6. shopt 内置命令启用shell选项 (extglob)

    使用shopt 内置命令启用shell选项 (extglob) 则会识别几个扩展模式匹配运算符 模式列表是由 | 分割 查看shell选项 extglob shopt |grep extglob 启动 ...

  7. Flink Application Development DataStream API Event Time--Flink应用开发DataStream API事件时间

    目录 概览 事件时间 接下来去哪儿 水印生成 水印策略简介 使用水印策略 处理空闲源 写水印生成代码 写周期WatermarkGenerator代码 写符号形式的WatermarkGenerator代 ...

  8. mysql 消息表分区方案

    首先先看消息表创建脚本 我们用hash分区 在字段 user_id 分成100个区 CREATE TABLE `messages` ( `id` int(10) unsigned NOT NULL A ...

  9. 最简单的asp验证码

    <%Public Function BornVerifyCode()         Randomize '设置随机因子         BornVerifyCode=Mid((Rnd * 10 ...

  10. mac上创建第一个C程序

    在mac电脑上,写C语言程序一般用终端来写,我们学习C主要是为了学习iOS的话,我们今天换Xcode来写C. 一.去App Store或者苹果开发者网站上下载Xcode.打开Xcode,创建项目. 二 ...