python: Screen Recording
用VLC media player播放录屏文件
""" python.exe -m pip install --upgrade pip pip install pyautogui pip install opencv-python pip install pywin32 """ # encoding: utf-8 # 版权所有 2023 ©涂聚文有限公司 # 许可信息查看: # 描述: 录屏类 # Author : geovindu,Geovin Du ©涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2023/8/2 16:11 # User : admin # Product : PyCharm # Project : pythonProject # File : ScreenRecording.py # explain : 学习 import cv2 import pyautogui import numpy as np import os import win32api from win32api import GetSystemMetrics from win32.lib import win32con import time class screenRecording(object): """ 录屏类 """ def win32screen(self): # Take resolution from system automatically w = GetSystemMetrics(0) h = GetSystemMetrics(1) SCREEN_SIZE = (w, h) fourcc = cv2.VideoWriter_fourcc(*"XVID") out = cv2.VideoWriter("recording.mp4", fourcc, 20.0, (SCREEN_SIZE)) tim = time.time() tp = int(input('How many times you want to record screen?->(Define value in Seconds): ')) tp = tp + tp f = tim + tp while True: img = pyautogui.screenshot() frame = np.array(img) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) out.write(frame) tu = time.time() if tu > f: break cv2.destroyAllWindows() out.release() def screen(self,output: str): """ :param outputfile: :return: """ # output = "video.avi" img = pyautogui.screenshot() img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # get info from img height, width, channels = img.shape # Define the codec and create VideoWriter object fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output, fourcc, 20.0, (width, height)) while (True): try: img = pyautogui.screenshot() image = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) out.write(image) StopIteration(0.5) except KeyboardInterrupt: break out.release() cv2.destroyAllWindows() def record_screen(self,output_file, fps=30): """ :param output_file: :param fps: :return: """ # 获取屏幕宽度和高度 screen_width, screen_height = pyautogui.size() # 创建视频编码器 fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output_file, fourcc, fps, (screen_width, screen_height)) # 设置屏幕录制区域 screen_area = (0, 0, screen_width, screen_height) while True: # 捕获屏幕图像 img = pyautogui.screenshot(region=screen_area) # 转换图像颜色空间 frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # 将图像写入视频文件 out.write(frame) # 按下q键停止录屏 if cv2.waitKey(1) == ord('q'): break # 释放资源 out.release() cv2.destroyAllWindows() print(f'录制已保存为{output_file}') def main(self): """ :return: """ output_file = 'screencast.mp4' fps = 30 print('按下q键停止录屏') self.record_screen(output_file, fps)
调用:
screen=ScreenRecording.screnRecording() screen.main()
""" python.exe -m pip install --upgrade pip pip install pyautogui pip install opencv-python pip install pywin32
python 3.11 """ # This is a sample Python script. import cv2 import pyautogui import numpy as np import os import win32api from win32api import GetSystemMetrics from win32.lib import win32con import time # Press Shift+F10 to execute it or replace it with your code. # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. def win32screen(): # Take resolution from system automatically w = GetSystemMetrics(0) h = GetSystemMetrics(1) SCREEN_SIZE = (w, h) fourcc = cv2.VideoWriter_fourcc(*"XVID") out = cv2.VideoWriter("recording.mp4", fourcc, 20.0, (SCREEN_SIZE)) tim = time.time() tp = int(input('How many times you want to record screen?->(Define value in Seconds): ')) tp = tp + tp f = tim + tp while True: img = pyautogui.screenshot() frame = np.array(img) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) out.write(frame) tu = time.time() if tu > f: break cv2.destroyAllWindows() out.release() def screen(output:str): """ :param outputfile: :return: """ #output = "video.avi" img = pyautogui.screenshot() img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # get info from img height, width, channels = img.shape # Define the codec and create VideoWriter object fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output, fourcc, 20.0, (width, height)) while (True): try: img = pyautogui.screenshot() image = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) out.write(image) StopIteration(0.5) except KeyboardInterrupt: break out.release() cv2.destroyAllWindows() def record_screen(output_file, fps=30): """ :param output_file: :param fps: :return: """ # 获取屏幕宽度和高度 screen_width, screen_height = pyautogui.size() # 创建视频编码器 fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output_file, fourcc, fps, (screen_width, screen_height)) # 设置屏幕录制区域 screen_area = (0, 0, screen_width, screen_height) while True: # 捕获屏幕图像 img = pyautogui.screenshot(region=screen_area) # 转换图像颜色空间 frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # 将图像写入视频文件 out.write(frame) # 按下q键停止录屏 if cv2.waitKey(1) == ord('q'): break # 释放资源 out.release() cv2.destroyAllWindows() print(f'录制已保存为{output_file}') def main(): """ :return: """ output_file = 'screencast.mp4' fps = 30 print('按下q键停止录屏') record_screen(output_file, fps) def print_hi(name): """ :param name: :return: """ # Use a breakpoint in the code line below to debug your script. print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint. # Press the green button in the gutter to run the script. if __name__ == '__main__': print_hi('PyCharm,涂聚文,Geovin Du') main() # See PyCharm help at https://www.jetbrains.com/help/pycharm/
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)