這篇文章主要介紹Python如何實(shí)現(xiàn)屏幕錄制功能,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出曹縣免費(fèi)做網(wǎng)站回饋大家。Python實(shí)現(xiàn)屏幕錄制功能的示例:
"""python + opencv 實(shí)現(xiàn)屏幕錄制_by-_Zjh_""" from PIL import ImageGrab import numpy as np import cv2 p = ImageGrab.grab()#獲得當(dāng)前屏幕 k=np.zeros((200,200),np.uint8) a,b=p.size#獲得當(dāng)前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*'XVID')#編碼格式 video = cv2.VideoWriter('test.avi', fourcc, 16, (a, b))#輸出文件命名為test.mp4,幀率為16,可以自己設(shè)置 while True: im = ImageGrab.grab() imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#轉(zhuǎn)為opencv的BGR格式 video.write(imm) cv2.imshow('imm', k) if cv2.waitKey(1) & 0xFF == ord('q'): break video.release() cv2.destroyAllWindows()
在停止錄制的時(shí)候我自己采用的是opencv的q鍵盤(pán)退出,實(shí)際上還是會(huì)有個(gè)黑框彈出來(lái),如果有更好的退出錄制方式請(qǐng)留下您的建議,本次還有個(gè)不足的地方是沒(méi)有增加錄制聲音的功能。最近事情太多了,等放假了出一個(gè)完整版的GUI程序。好了今天就先到這了,快要考線(xiàn)性系統(tǒng)這門(mén)課了,得開(kāi)始復(fù)習(xí)了
最近接觸了 pynput 這個(gè)強(qiáng)大的三方庫(kù),可以全局監(jiān)聽(tīng)鍵盤(pán)、鼠標(biāo)事件。把以前的屏幕錄制的程序改進(jìn)一下!請(qǐng)忽略以前的程序,直接看這個(gè)!
""" python 屏幕錄制改進(jìn)版,無(wú)opencv黑框顯示! @zhou 2020/1/29_ """ from PIL import ImageGrab import numpy as np import cv2 import datetime from pynput import keyboard import threading flag=False #停止標(biāo)志位 def video_record(): """ 屏幕錄制! :return: """ name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') #當(dāng)前的時(shí)間 p = ImageGrab.grab() # 獲得當(dāng)前屏幕 a, b = p.size # 獲得當(dāng)前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 編碼格式 video = cv2.VideoWriter('%s.avi'%name, fourcc, 20, (a, b)) # 輸出文件命名為test.mp4,幀率為16,可以自己設(shè)置 while True: im = ImageGrab.grab() imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#轉(zhuǎn)為opencv的BGR格式 video.write(imm) if flag: print("錄制結(jié)束!") break video.release() def on_press(key): """ 鍵盤(pán)監(jiān)聽(tīng)事件?。?! :param key: :return: """ #print(key) global flag if key == keyboard.Key.esc: flag=True print("stop monitor!") return False #返回False,鍵盤(pán)監(jiān)聽(tīng)結(jié)束! if __name__=='__main__': th=threading.Thread(target=video_record) th.start() with keyboard.Listener(on_press=on_press) as listener: listener.join()
現(xiàn)在錄制就不用之前那個(gè)黑框了,按 esc按鍵 直接停止錄制!
PS:在通過(guò)代碼給大家介紹下python 實(shí)現(xiàn)屏幕錄制
PIL 即pollow 的安裝命令如下:
pip install pillow
其中cv2的安裝是下面這條命令
pip install opencv-python
代碼實(shí)現(xiàn):
# coding: utf-8 from PIL import ImageGrab import numpy as np import cv2 fps = 20 start = 3 # 延時(shí)錄制 end = 15 # 自動(dòng)結(jié)束時(shí)間 curScreen = ImageGrab.grab() # 獲取屏幕對(duì)象 height, width = curScreen.size video = cv2.VideoWriter('video02.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (height, width)) imageNum = 0 while True: imageNum += 1 captureImage = ImageGrab.grab() # 抓取屏幕 frame = cv2.cvtColor(np.array(captureImage), cv2.COLOR_RGB2BGR) # 顯示無(wú)圖像的窗口 cv2.imshow('capturing', np.zeros((1, 255), np.uint8)) # 控制窗口顯示位置,方便通過(guò)按鍵方式退出 cv2.moveWindow('capturing', height - 100, width - 100) if imageNum > fps * start: video.write(frame) # 退出條件 if cv2.waitKey(50) == ord('q') or imageNum > fps * end: break video.release() cv2.destroyAllWindows()
以上是“Python如何實(shí)現(xiàn)屏幕錄制功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。