利用Python3编写一个电脑录屏神器

目录
  • 1、引言
  • 2、代码实战
    • 2.1 编写思路
    • 2.2 代码示例
  • 3、总结

1、引言

女神:鱼哥,忙吗?

小鱼:嗯嗯, 忙, 哦不 , 不忙不忙。

女神:鱼哥,那能不能帮我个忙?

小鱼:这没问题啊这。

女神:你是认真说的吗?

小鱼:认真的啊,这还能不认真吗。

女神:说好了,不准反悔。

小鱼:我鱼愿意为你,牺牲睡觉的时间,做事情。

女神:鱼哥,你还帅哦。

小鱼:不要羡慕鱼哥, 鱼哥上学从来没在一班呆过。

女神:嗯嗯~ ~ 太哇塞了。

小鱼:说吧, 你有啥事需要我,该不会是…?

女神:想什么呢? 我我想录制一个视频,但是不知道用什么软件,能帮忙找一个吗?

小鱼:就这啊… 我还以为啥难事呢?

女神:那你的意思,可以帮忙了。

小鱼:必须的。

2、代码实战

2.1 编写思路

编写视频录制器, 我们需要以下步骤:

1、初始化变量,默认为True时,就是录制;

2、创建录制函数,用于进行视频录制;

3、创建键盘监听函数,如果按esc按键,就停止录制;

有了以上思路,我们就进行代码编写。

2.2 代码示例

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-10
# @Author : Carl_DJ

'''
制作视频录制器
实现功能:
1、倒计时开始进行录制
2、点击 键盘的 esc按键,就停止录制
3、打包成.exe, 直接点击就可以运行
'''
import cv2
from PIL import ImageGrab
import numpy as np
import datetime
from pynput import keyboard
import threading
from loguru import logger
import  time
import  os
# 初始化变量
is_running = True

'#创建录制过程生成的generate_video,用于生成录制视频'

def generate_video():
    '''
    生成录制视频
    :return:
    '''
    #当前时间戳为文件名字
    start_time = datetime.datetime.now().strftime('%Y-%m-%d %H%M%S')
    file_name = (start_time + '录制视频')
    # file_name= input("输入录制文件的名称")
    screen = ImageGrab.grab()
    width,height = screen.size
    fource = cv2.VideoWriter_fourcc(*'XVID')
    video = cv2.VideoWriter('%s.avi'% file_name,fource,20,(width,height))
    for n in range(3):
        logger.debug(str(3-n)+ '秒后开始录制')
        time.sleep(1)
    while True:
        im1 = ImageGrab.grab()
        im2 = cv2.cvtColor(np.array(im1),cv2.COLOR_RGBA2RGB)
        video.write(im2)
        if is_running is False:
            logger.debug('屏幕录制结束')
            break
    video.release()

'创建键盘监听函数 press_keyboard,监听输入,如果按下esc则改变运行状态'
# is_running = False #注释掉
def press_keyboard(key):
    '''
    键盘监听函数
    :param key:
    :return:
    '''
    global  is_running
    if key == keyboard.Key.esc:
        logger.debug('已按下ESC键,录制结束')
        is_running = False
        return False

if __name__ == '__main__':
    thread_ = threading.Thread(target=generate_video)
    thread_.start()
    logger.debug('开始进入录制视频')
    with keyboard.Listener(on_press = press_keyboard) as listener:
        listener.join()

3、总结

看到这里,今天的分享差不多就该结束了。

今天主要通过pynupt、PIL、numpy 库来介绍视频的录制及触发键盘的按键后,结束录制。

整体还算简单,但是针对初学者来说,还是有一点点的难度。

同时, 我也把代码封装成.exe应用,双击即可直接运行,

这里也说一下:

1、生成文件地址,与exe应用统计目录

2、生成文件名称:日期+时间戳+录制视频.avi

3、结束按键:esc

到此这篇关于利用Python3编写一个电脑录屏神器的文章就介绍到这了,更多相关Python电脑录屏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python实现录屏功能(亲测好用)

    前言 由与上不了学,教我们Mastercam的老师提前给我们布置了4道习题.对我们太好了,谢谢老师� 没办法,干就完了. 只是要求附上制作过程视频,就想到了能不能用python做个录屏的程序,于是在网上看了好多文章,发现很多都不是很好用,要不就是太麻烦(我就录个屏,不用声音,也不用控件).最后看到了一个符合我要求的,可以去看看这里(感谢!) 不过呢,俗话说:适合自己的才是最好的.当我们用的时候,会发现录制的时间和视频播放的时间不一致,有的快了,有的慢了,所以就想出了原因与解决办法.接

  • python实现录制全屏和选择区域录屏功能

    最近给客户演示程序运行结果,我就想到用Python写一个录屏程序,在网上能找到现成的源码,但是它的录屏是录制整个屏幕的.但是在屏幕桌面下方的任务栏工具栏里有些东西,不希望被录制到视频里,因此需要实现一个选择区域录屏,就像qq截图那样的.我编写的程序如下,在主函数的输入参数里有一个选项控制是全屏录制还是选择区域录制.在编写这个程序时,我有一个疑问,在初始化写视频VideoWriter函数的第4个参数,它表示视频帧的高和宽,全屏录制方式的参数是(height,width),选择区域录制的参数是(wi

  • python基于tkinter实现gif录屏功能

    一.主界面实现 (一)实现最简单的窗体 from tkinter import * if __name__ == '__main__': tk = Tk() tk.geometry('500x400+500+150') tk.title('有趣的透明窗体-开篇了!!!') canvas = Canvas(tk) canvas.pack(fill=BOTH, expand=Y) tk.mainloop() 太简单了,不详细说了,相信大家都看得懂. (二)把灰色设置成透明色 TRANSCOLOUR

  • 利用Python3编写一个电脑录屏神器

    目录 1.引言 2.代码实战 2.1 编写思路 2.2 代码示例 3.总结 1.引言 女神:鱼哥,忙吗? 小鱼:嗯嗯, 忙, 哦不 , 不忙不忙. 女神:鱼哥,那能不能帮我个忙? 小鱼:这没问题啊这. 女神:你是认真说的吗? 小鱼:认真的啊,这还能不认真吗. 女神:说好了,不准反悔. 小鱼:我鱼愿意为你,牺牲睡觉的时间,做事情. 女神:鱼哥,你还帅哦. 小鱼:不要羡慕鱼哥, 鱼哥上学从来没在一班呆过. 女神:嗯嗯~ ~ 太哇塞了. 小鱼:说吧, 你有啥事需要我,该不会是…? 女神:想什么呢? 我

  • 利用Python编写一个闹钟,治好你的拖延症

    目录 一.小科普 1)time模块 2)messagebox模块 二.准备中 1)环境安装 2)素材(音乐+背景可修改) 三.开始敲代码 1)导入模块 2)界面设置 3)获取当前实时时间 4)设置开始.退出按钮 5)设置到点播放音乐 6)额外设置的一个弹窗提醒 四.效果展示 总结 导语 相信有不少人的闹钟是设成这样的: 6:20 6:30 6:35 6:37 …… 起床真是令人困扰的事情,有的人根本不用定闹钟,但有的人提前半个小时闹钟都叫不醒,你的闹钟怎么定的? 举个粒子: 现在这天气真的就很需

  • 利用Python编写一个记忆翻牌游戏

    目录 导语 开发工具 环境搭建 先睹为快 原理简介 导语 昨天看到有留言竟然说我是月更博主,我明明更新地这么勤快(心虚.jpg).看吧,昨天刚更新过,今天又来更新了. 今天还是带大家写个小游戏吧,不过老是用pygame也没啥意思,这次我们换点新花样,用python自带的tkinter包写一个记忆翻牌小游戏呗. 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.4 相关模块: pygame模块: tkinter模块: pillow模块: 以及一些python自带的模块. 环境搭

  • 利用Rust编写一个简单的字符串时钟

    目录 1.简介 2.用到的知识点 2.1 取utc时间 2.2 图片变换为像素图案 2.3 字符方式显示当前时间 2.4 时间刷新 1.简介 用rust写的一个简单的练手的demo,一个字符串时钟,在终端用字符串方式显示当前时间.本质是对图片取灰度,然后每个像素按灰度门限用星号代替灰度值,就把图片变为由星号组成的字符型图案.把时间字符串的每个字符按照字母和数字图片的样式转换为字符,然后拼接字符图案就实现了字符时钟的效果. 主要用到的知识有:rust操作时间.字符串.vector,字符串和vect

  • 如何利用JavaScript编写一个格斗小游戏

    拖延症晚期的我原本计划趁着周末写个年终总结,但是一直没有什么思路,想来想去也没想到要写啥就胡乱写了这么一个小东西. 一直比较痴迷游戏行业,可能我不太适合做前端,应该去学C++.... 首先当然是选择一张背景图,作为整个场景中的地图,而且要大要高清.布局到页面中. 然后通过可视区值展示这张图片的一小部分.我这里用的是宽600,高420的,超出直接隐藏掉. width: 600px; height: 420px; 这样一个简单的场景就写好了,接着我们需要在这个场景中加入我们的人物.也就是游戏中的角色

  • C# 利用VS编写一个简单的网游客户端

    目录 一.测试连接服务器 二.设计客户端 三.运行效果 四.总结 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入telnet,进入telnet界面 3.输入set localecho,打开本地回显: 4.连接服务器,输入命令open 10.1.230.74 3900 二.设计客户端 1.新建项目 打开VS2022选择新建Windows窗体应用 如果没找到,说明没有安装相应的配置,可以添加工具 选择 安装成功就能找到了. 2.设计界面 新建完成后,会直接来到Fo

  • 利用Java编写一个出敬业福的小程序

    目录 1.前言 2.定义工具类 3.生成"福"主类 4.运行测试 5.素材图片 1.前言 “福”的由来: 姜太公封一大批神仙时,却把自己的妻子叶氏封为穷神,还告诉她说:“有福的地方,你不能去.”从此,家家过年贴福字,就是告诉穷神,我这里是有福的地方,你千万不能进来.福字,就是摆脱穷困.追求幸福的象征. 福字之所以倒贴,传说起于清代恭亲王府.那年春节前夕,大管家按例写了几个斗大的“福”字,叫人贴于王府的大门上.有个家丁目不识丁,竟将“福”字头朝下贴上.恭亲王福晋十分气恼,欲鞭罚惩戒.可这

  • 利用Python编写一个藏头诗在线生成器

    目录 导语 正文 一.藏头诗(“小浪漫”) 二.实现代码 三.效果展示 导语 我寻竹马旅尘埃,喜见梅花独自开. 欢得东风无限好,你似故人有缘来. ——顾木子吖 你看懂了嘛? 哈喽大家好,我是木木子,上一期的唐诗宋词元曲鉴赏中华古诗词之美已经发出来给大家品读了. 这一期的话是上一期的延续哈~听说藏头诗这用来表白貌似也不错哈. 可爱有趣的藏头诗情话——来~我们来康康叭! 正文 一.藏头诗(“小浪漫”) 又要上班了我们来发个牢骚——想想下一个国家法定节日就得等到元旦了 就很难过,好漫长啊!你是不是也挺

  • 利用Java编写一个属于自己的日历

    目录 问题提出 一点提示 源码分享 问题提出 编写程序,输入年份,打印出该年的年历(12个月的),效果如下图所示. 一点提示 使用 Java 自带的 Calendar 类得到一个 Calendar 类对象,然后我们可以去得到每个月的第一天是星期几 Calendar 类不能直接 new 得到对象,需要使用 getInstance() 函数 //得到一个Calendar对象 Calendar c = Calendar.getInstance(); Calendar 类的 set 可以设置自己想要的日

  • 利用JavaScript编写一个花里胡哨的点击按钮

    目录 正片 结构就两行 样式 表现 正片 小轮播图滑动滚播,好不好看你说了算. 视频演示 结构就两行 <main> <div class="grid"> <div class="grid__item theme-1"> <button class="action"><svg class="icon icon--rewind"> <use xlink:href=&

随机推荐