更新时间: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()

最新文章

  1. Yii2 中自定义实例名称
  2. .NET DLR 上的IronScheme 语言互操作&&IronScheme控制台输入中文的问题
  3. TPageControl组件
  4. 文本分析工具awk简单示例
  5. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]
  6. dom4j中对xml的查增
  7. Javascript线程及定时机制
  8. 设计模式UML图
  9. zoj 1962 How Many Fibs?(字符串化为数字处理)
  10. BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)
  11. CSS定位:几种类型的position定位的元素
  12. net core 安装web模板
  13. Centos环境下搭建Asp.NET Core环境和安装Jexus
  14. Win 及 Linux 查找mac地址的方法
  15. mahout系列----Dirichlet 分布
  16. DSAPI之摄像头追踪指定颜色物体
  17. 基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】
  18. H5 文本属性
  19. 关于mysql远程连接
  20. Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1

热门文章

  1. Burpsuite入门之target模块攻防中利用
  2. MySQL表操作(上篇)
  3. ICPC2020 World Final
  4. idea 导入项目之后,只显示项目文件,不显示项目结构
  5. PyMySQL创建
  6. Android 隐藏和显示软键盘
  7. iOS底层原理02-alloc源码分析
  8. 在 C# 中调用FastReport 设计窗口
  9. Navicat连接Oracle时报错ORA-28547:完美解决
  10. Ubuntu 20.04 部署kubernetes 网络组件calico-v3.2.1