利用Python編寫簡(jiǎn)易的錄制屏幕小工具
由于最近測(cè)試需要錄制系統(tǒng)界面的操作過程,因?yàn)槎际侨恋牟僮鳎杂胮ython做一個(gè)簡(jiǎn)單的錄屏小工具。
實(shí)現(xiàn)過程也是比較簡(jiǎn)單,就是通過對(duì)屏幕操作進(jìn)行不斷的截圖,最后將截圖合成一個(gè)操作視頻的過程。由于我們只是做簡(jiǎn)單的截屏功能,并沒有加入音頻效果。

1、準(zhǔn)備
開始之前我們還是按照以往的方式介紹一下使用到的第三方的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
由于實(shí)現(xiàn)過程比較少,這里我們不再創(chuàng)建標(biāo)準(zhǔn)的class實(shí)現(xiàn),直接在.py文件寫相關(guān)的函數(shù)來實(shí)現(xiàn)。
2、代碼
實(shí)現(xiàn)過程主要是通過兩個(gè)函數(shù)來實(shí)現(xiàn)的,一個(gè)是實(shí)現(xiàn)具體的屏幕截圖操作,并且將其寫入視頻。另一個(gè)則是用來監(jiān)聽鍵盤的輸入,若是按下esc鍵時(shí)則退出當(dāng)前的錄制操作。
初始化一個(gè)變量作為停止標(biāo)志。
is_running?=?True
創(chuàng)建錄制過程生成函數(shù)generate_video,用以生成錄制視頻。
def?generate_video():
????'''
????生成錄制視頻函數(shù)
????: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('屏幕錄制已經(jīng)結(jié)束!')
????????????break
????video.release()
創(chuàng)建鍵盤監(jiān)聽函數(shù)press_keyboard,監(jiān)聽輸入,若是按下esc鍵則改變運(yùn)行狀態(tài)。
is_running=False
def?press_keyboard(key):
????'''
????鍵盤監(jiān)聽函數(shù)
????:param?key:
????:return:
????'''
????global?is_running
????if?key?==?keyboard.Key.esc:
????????logger.debug('ESC已經(jīng)被按下,馬上結(jié)束錄制!')
????????is_running?=?False
????????return?False
執(zhí)行主函數(shù)main,啟動(dòng)則執(zhí)行屏幕錄制。
if?__name__?==?'__main__':
????thread_?=?threading.Thread(target=generate_video)
????thread_.start()
????logger.debug('?開始進(jìn)入視頻錄制!')
????with?keyboard.Listener(on_press=press_keyboard)?as?listener:
????????listener.join()
最后,使用pyinstaller將其打包成exe的可執(zhí)行應(yīng)用,使用時(shí)直接雙擊打開即可開始錄制屏幕的操作過程。
pyinstaller?-i?.\video.ico?-Fw?.\test2.py
至此,錄制屏幕小工具就大功告成了。
到此這篇關(guān)于利用Python編寫簡(jiǎn)易的錄制屏幕小工具的文章就介紹到這了,更多相關(guān)Python錄制屏幕工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python之Django自動(dòng)化資產(chǎn)掃描的實(shí)現(xiàn)
這篇文章主要介紹了python之Django自動(dòng)化資產(chǎn)掃描的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
numpy中的delete刪除數(shù)組整行和整列的實(shí)例
今天小編就為大家分享一篇numpy中的delete刪除數(shù)組整行和整列的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
解決pytorch 數(shù)據(jù)類型報(bào)錯(cuò)的問題
這篇文章主要介紹了解決pytorch 數(shù)據(jù)類型報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python Opencv實(shí)戰(zhàn)之文字檢測(cè)OCR
這篇文章主要為大家詳細(xì)介紹了如何利用Python Opencv實(shí)現(xiàn)文字檢測(cè)OCR功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-08-08
python結(jié)合API實(shí)現(xiàn)即時(shí)天氣信息
這篇文章主要介紹了python結(jié)合API實(shí)現(xiàn)即時(shí)天氣信息的代碼,非常的實(shí)用,有需要的小伙伴可以參考下。2016-01-01
Python構(gòu)建一個(gè)文檔掃描器的實(shí)現(xiàn)
本文主要介紹了Python構(gòu)建一個(gè)文檔掃描器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python將dict中的unicode打印成中文實(shí)例
這篇文章主要介紹了python將dict中的unicode打印成中文實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Pycharm Available Package無法顯示/安裝包的問題Error Loading Package Li
這篇文章主要介紹了Pycharm Available Package無法顯示/安裝包的問題Error Loading Package List解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

