Erstellen Sie mit Python einen Bildschirmrekorder
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
pip install numpy
- pyautogui: Um pyautogui zu installieren, geben Sie den folgenden Befehl in das Terminal ein.
pip install pyautogui
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: