利用Python3編寫一個(gè)電腦錄屏神器
1、引言
女神:魚哥,忙嗎?
小魚:嗯嗯, 忙, 哦不 , 不忙不忙。
女神:魚哥,那能不能幫我個(gè)忙?
小魚:這沒(méi)問(wèn)題啊這。
女神:你是認(rèn)真說(shuō)的嗎?
小魚:認(rèn)真的啊,這還能不認(rèn)真嗎。
女神:說(shuō)好了,不準(zhǔn)反悔。
小魚:我魚愿意為你,犧牲睡覺(jué)的時(shí)間,做事情。
女神:魚哥,你還帥哦。
小魚:不要羨慕魚哥, 魚哥上學(xué)從來(lái)沒(méi)在一班呆過(guò)。
女神:嗯嗯~ ~ 太哇塞了。
小魚:說(shuō)吧, 你有啥事需要我,該不會(huì)是…?
女神:想什么呢? 我我想錄制一個(gè)視頻,但是不知道用什么軟件,能幫忙找一個(gè)嗎?
小魚:就這啊… 我還以為啥難事呢?
女神:那你的意思,可以幫忙了。
小魚:必須的。
2、代碼實(shí)戰(zhàn)
2.1 編寫思路
編寫視頻錄制器, 我們需要以下步驟:
1、初始化變量,默認(rèn)為True時(shí),就是錄制;
2、創(chuàng)建錄制函數(shù),用于進(jìn)行視頻錄制;
3、創(chuàng)建鍵盤監(jiān)聽(tīng)函數(shù),如果按esc按鍵,就停止錄制;
有了以上思路,我們就進(jìn)行代碼編寫。
2.2 代碼示例
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-10
# @Author : Carl_DJ
'''
制作視頻錄制器
實(shí)現(xiàn)功能:
1、倒計(jì)時(shí)開(kāi)始進(jìn)行錄制
2、點(diǎn)擊 鍵盤的 esc按鍵,就停止錄制
3、打包成.exe, 直接點(diǎn)擊就可以運(yùn)行
'''
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
'#創(chuàng)建錄制過(guò)程生成的generate_video,用于生成錄制視頻'
def generate_video():
'''
生成錄制視頻
:return:
'''
#當(dāng)前時(shí)間戳為文件名字
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)+ '秒后開(kāi)始錄制')
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('屏幕錄制結(jié)束')
break
video.release()
'創(chuàng)建鍵盤監(jiān)聽(tīng)函數(shù) press_keyboard,監(jiān)聽(tīng)輸入,如果按下esc則改變運(yùn)行狀態(tài)'
# is_running = False #注釋掉
def press_keyboard(key):
'''
鍵盤監(jiān)聽(tīng)函數(shù)
:param key:
:return:
'''
global is_running
if key == keyboard.Key.esc:
logger.debug('已按下ESC鍵,錄制結(jié)束')
is_running = False
return False
if __name__ == '__main__':
thread_ = threading.Thread(target=generate_video)
thread_.start()
logger.debug('開(kāi)始進(jìn)入錄制視頻')
with keyboard.Listener(on_press = press_keyboard) as listener:
listener.join()3、總結(jié)
看到這里,今天的分享差不多就該結(jié)束了。
今天主要通過(guò)pynupt、PIL、numpy 庫(kù)來(lái)介紹視頻的錄制及觸發(fā)鍵盤的按鍵后,結(jié)束錄制。
整體還算簡(jiǎn)單,但是針對(duì)初學(xué)者來(lái)說(shuō),還是有一點(diǎn)點(diǎn)的難度。
同時(shí), 我也把代碼封裝成.exe應(yīng)用,雙擊即可直接運(yùn)行,
這里也說(shuō)一下:
1、生成文件地址,與exe應(yīng)用統(tǒng)計(jì)目錄
2、生成文件名稱:日期+時(shí)間戳+錄制視頻.avi
3、結(jié)束按鍵:esc
到此這篇關(guān)于利用Python3編寫一個(gè)電腦錄屏神器的文章就介紹到這了,更多相關(guān)Python電腦錄屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊
這篇文章主要為大家介紹了python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
django之對(duì)django內(nèi)置的User模型進(jìn)行自定義擴(kuò)展方式
這篇文章主要介紹了django之對(duì)django內(nèi)置的User模型進(jìn)行自定義擴(kuò)展方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
PyQt5 QTableView設(shè)置某一列不可編輯的方法
今天小編就為大家分享一篇PyQt5 QTableView設(shè)置某一列不可編輯的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python使用pytest接口自動(dòng)化測(cè)試的使用
這篇文章主要介紹了python使用pytest接口自動(dòng)化測(cè)試的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
python中將字典形式的數(shù)據(jù)循環(huán)插入Excel
這篇文章主要介紹了python中將字典形式的數(shù)據(jù)循環(huán)插入Excel的方法,需要的朋友可以參考下2018-01-01
Django+Xadmin構(gòu)建項(xiàng)目的方法步驟
這篇文章主要介紹了Django+Xadmin構(gòu)建項(xiàng)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03

