目录
  • 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

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。