分享

Python-录制电脑视频

 gfergfer 2023-08-07 发布于辽宁

项目上需要监控电脑画面,故想到设计一个录制电脑视频的程序,

Python的第三方库PIL有个模块ImageGrab可以实现屏幕画面的抓取,配合opencv实现图片转为视频即可实现录制电脑视频

整体思路就是PIL模块中的ImageGrab不停的获得当前屏幕画面,利用opencv写入视频流

from PIL import ImageGrabimport numpy as npimport cv2import time
tlast = 10 # 录制的时长,单位秒p = ImageGrab.grab() # 获得当前屏幕a, b = p.size # 获得当前屏幕的大小fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式video = cv2.VideoWriter('test.mp4', fourcc, 16, (a, b)) # 输出文件命名为test.mp4,帧率为16,可以自己设置print('start record the screen')time1 = time.time()while True: if time.time()-time1 > tlast: break im = ImageGrab.grab() imm = cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR) # 转为opencv的BGR格式 video.write(imm)video.release()

这个代码有个不太方便的地方就是需要指定录制视频,没法通过键盘来触发推出命令,故考虑通过pynput方法,监控键盘,通过键盘特定键实现屏幕录制自动结束

from PIL import ImageGrabimport numpy as npimport cv2import datetimefrom pynput import keyboardimport threading
flag = False # 停止标志位

def video_record(): ''' 屏幕录制! :return: ''' name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') # 当前的时间 p = ImageGrab.grab() # 获得当前屏幕 a, b = p.size # 获得当前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式 video = cv2.VideoWriter('%s.avi' % name, fourcc, 16, (a, b)) # 输出文件命名为时间.avi,帧率为16,可以自己设置 while True: im = ImageGrab.grab() imm = cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR) # 转为opencv的BGR格式 video.write(imm) if flag: print('录制结束!') break video.release()

def on_press(key): ''' 键盘监听事件!!! :param key: :return: ''' # print(key) global flag if key == keyboard.Key.esc: flag = True print('stop monitor!') return False # 返回False,键盘监听结束!

if __name__ == '__main__': th = threading.Thread(target=video_record) th.start() with keyboard.Listener(on_press=on_press) as listener: listener.join()

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多