程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python錄制屏幕小工具,已調試成功運行

編輯:Python

由於最近測試需要錄制系統界面的操作過程,因為都是全屏的操作,所以用python做一個簡單的錄屏小工具。

實現過程也是比較簡單,就是通過對屏幕操作進行不斷的截圖,最後將截圖合成一個操作視頻的過程。由於我們只是做簡單的截屏功能,並沒有加入音頻效果。

喜歡本文記得收藏、關注、點贊。完整代碼、技術交流,文末獲取

1、准備

開始之前我們還是按照以往的方式介紹一下使用到的第三方的python模塊。

from PIL import ImageGrab
import numpy as np
import cv2
import datetime
from pynput import keyboard
import threading
from loguru import logger
import time

由於實現過程比較少,這裡我們不再創建標准的class實現,直接在.py文件寫相關的函數來實現。

2、代碼

實現過程主要是通過兩個函數來實現的,一個是實現具體的屏幕截圖操作,並且將其寫入視頻。另一個則是用來監聽鍵盤的輸入,若是按下esc鍵時則退出當前的錄制操作。

初始化一個變量作為停止標志。

is_running = True

創建錄制過程生成函數generate_video,用以生成錄制視頻。

def generate_video():
''' 生成錄制視頻函數 :return: '''
file_name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
screen = ImageGrab.grab()
width, height = screen.size
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video = cv2.VideoWriter('%s.avi' % file_name, fourcc, 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_RGB2BGR)
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

執行主函數main,啟動則執行屏幕錄制。

if __name__ == '__main__':
thread_ = threading.Thread(target=generate_video)
thread_.start()
logger.debug(' 開始進入視頻錄制!')
with keyboard.Listener(on_press=press_keyboard) as listener:
listener.join()

最後,使用pyinstaller將其打包成exe的可執行應用,使用時直接雙擊打開即可開始錄制屏幕的操作過程。

pyinstaller -i .\video.ico -Fw .\test2.py

至此,錄制屏幕小工具就大功告成了。

聯系方式

目前開通了技術交流群,群友已超過3000人,添加時最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友,資料獲取也可以加入

方式1、添加微信號:dkl88191,備注:來自CSDN
方式2、微信搜索公眾號:Python學習與數據挖掘,後台回復:加群


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved