Python ist eine weit verbreitete Allzwecksprache. Es ermöglicht die Ausführung einer Vielzahl von Aufgaben. Einer von ihnen kann ein Video aufnehmen. Es bietet ein Modul namens pyautogui , das für dasselbe verwendet werden kann. Dieses Modul bietet zusammen mit NumPy und OpenCV die Möglichkeit, die Bilder zu bearbeiten und zu speichern (in diesem Fall Screenshot).

Module benötigt

  • Numpy: Um Numpy zu installieren, geben Sie den folgenden Befehl in das Terminal ein.
pip install numpy
  • pyautogui: Um pyautogui zu installieren, geben Sie den folgenden Befehl in das Terminal ein.
pip install pyautogui
  • OpenCV: Um OpenCV zu installieren, geben Sie den folgenden Befehl in das Terminal ein.
pip installiere opencv-python

Unten ist die Implementierung.

Importieren Sie zunächst alle erforderlichen Pakete. 

import pyautogui 
import cv2 
import numpy as np

Bevor wir den Bildschirm aufnehmen, müssen wir ein VideoWriter-Objekt erstellen. Außerdem müssen wir den Namen der Ausgabedatei, den Videocodec, die FPS und die Videoauflösung angeben. Im Video-Codec müssen wir einen 4-Byte-Code angeben (z. B. XVID, MJPG, X264 usw.). Wir werden hier XVID verwenden.



resolution = (1920, 1080) 
  
codec = cv2.VideoWriter_fourcc(*"XVID") 
  
filename = "Recording.avi"
  
fps = 60.0
  
out = cv2.VideoWriter(filename, codec, fps, resolution)

Optional: Um die Aufzeichnung in Echtzeit anzuzeigen, müssen Sie ein leeres Fenster erstellen und dessen Größe ändern.

cv2.namedWindow("Live", cv2.WINDOW_NORMAL) 
  
cv2.resizeWindow("Live", 480, 270)

Beginnen wir jetzt mit der Aufnahme unseres Bildschirms. Wir werden eine Endlosschleife ausführen und in jeder Iteration der Schleife einen Screenshot machen und ihn mit Hilfe des Videoschreibers in die Ausgabedatei schreiben.

while True: 
  
    
    img = pyautogui.screenshot() 
  
    
    frame = np.array(img) 
  
    
    
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
  
    
    out.write(frame) 
      
    
    cv2.imshow('Live', frame) 
      
    
    if cv2.waitKey(1) == ord('q'): 
        break

Nachdem alles erledigt ist, werden wir den Writer freigeben und alle von OpenCV geöffneten Fenster zerstören.

out.release() 
  
cv2.destroyAllWindows()

Vollständiger Code:

import pyautogui 
import cv2 
import numpy as np 
  
resolution = (1920, 1080) 
  
codec = cv2.VideoWriter_fourcc(*"XVID") 
  
filename = "Recording.avi"
  
fps = 60.0
  
  
out = cv2.VideoWriter(filename, codec, fps, resolution) 
  
cv2.namedWindow("Live", cv2.WINDOW_NORMAL) 
  
cv2.resizeWindow("Live", 480, 270) 
  
while True: 
    
    img = pyautogui.screenshot() 
  
    
    frame = np.array(img) 
  
    
    
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
  
    
    out.write(frame) 
      
    
    cv2.imshow('Live', frame) 
      
    
    if cv2.waitKey(1) == ord('q'): 
        break
  
out.release() 
  
cv2.destroyAllWindows()

Ausgabe: