.. note:: Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken. - **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte. - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil. 👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei! .. _3.1.2_py: 3.1.2 Videomodul ===================== Einführung ----------------- Zusätzlich zum Fotografieren kann das Kameramodul auch zum Aufnehmen von Videos verwendet werden. Erforderliche Komponenten ------------------------------ Für dieses Projekt benötigen wir die folgenden Komponenten. .. image:: ../img/photo1.png :width: 800 Es ist definitiv praktisch, ein gesamtes Kit zu kaufen. Hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können sie auch einzeln über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENBESCHREIBUNG - KAUF-LINK * - :ref:`cpn_camera_module` - |link_camera_buy| Experimentelle Verfahren ------------------------------ **Schritt 1:** Wechseln Sie zum Raspberry Pi Desktop. Für ein besseres Erlebnis benötigen Sie möglicherweise einen Bildschirm, siehe: `Verbinden Sie Ihren Raspberry Pi `_. Oder greifen Sie remote auf den Raspberry Pi Desktop zu, für ein ausführliches Tutorial siehe :ref:`remote_desktop`. **Schritt 2:** Öffnen Sie ein Terminal und navigieren Sie zum Ordner des Codes. .. code-block:: cd ~/raphael-kit/python/ **Schritt 3:** Ausführen. .. code-block:: sudo python3 3.1.2_VideoModule.py Starten Sie den Code, um die Aufnahme zu beginnen. Drücken Sie ``Ctrl+C``, um die Aufnahme zu beenden. Benennen Sie das Video ``my_video.h264`` und speichern Sie es im ``~`` Verzeichnis. .. note:: Sie können auch ``3.1.2_PhotographModule.py`` im ``~/raphael-kit/python/`` Pfad mit einer Python IDE öffnen, den Run-Button klicken, um den Code auszuführen und den Code mit dem Stop-Button stoppen. Wenn Sie Fotos an Ihren PC senden möchten, verweisen Sie bitte auf :ref:`filezilla`. **Code** .. code-block:: python #!/usr/bin/env python3 import time from picamera2 import Picamera2, Preview from picamera2.encoders import H264Encoder from picamera2.outputs import FfmpegOutput import os # Get the current user's login name user = os.getlogin() # Get the path to the user's home directory user_home = os.path.expanduser(f'~{user}') # Create a Picamera2 instance camera = Picamera2() # Retrieve the default preview configuration preview_config = camera.preview_configuration try: # Configure preview size and format preview_config.size = (800, 600) preview_config.format = 'XRGB8888' # Start the camera preview in QTGL mode camera.start_preview(Preview.QTGL) # Define video configuration with size, frame rate, and buffer count conf = {'size': (800, 600)} controls = {'FrameRate': 40} config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12) # Create a video encoder with a specified bitrate encoder = H264Encoder(bitrate=10000000) # Define output file for the video output = FfmpegOutput(f'{user_home}/my_video.mp4') # Configure and start recording camera.configure(config) camera.start_recording(encoder, output) # Record for 10 seconds time.sleep(10) # Stop the recording camera.stop_recording() except KeyboardInterrupt: # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs camera.stop_preview() pass **Code-Erklärung** #. Importiert die benötigten Bibliotheken und Klassen. Die Bibliothek ``picamera2`` wird zur Kamerasteuerung verwendet, ``H264Encoder`` für die Videoenkodierung und ``FfmpegOutput`` zur Definition der Videoausgabedatei. .. code-block:: python #!/usr/bin/env python3 import time from picamera2 import Picamera2, Preview from picamera2.encoders import H264Encoder from picamera2.outputs import FfmpegOutput import os #. Ruft den aktuellen Benutzernamen sowie den Pfad zum Home-Verzeichnis des Benutzers ab. .. code-block:: python # Aktuellen Benutzernamen abrufen user = os.getlogin() # Pfad zum Home-Verzeichnis des Benutzers abrufen user_home = os.path.expanduser(f'~{user}') #. Erstellt eine Instanz der ``Picamera2``-Klasse und ruft die Standard-Vorschaukonfiguration ab. .. code-block:: python # Eine Picamera2-Instanz erstellen camera = Picamera2() # Die Standard-Vorschaukonfiguration abrufen preview_config = camera.preview_configuration #. Legt die Größe und das Format der Kamera-Vorschau fest. Die Größe wird auf 800×600 Pixel gesetzt, das Format auf ``XRGB8888``. .. code-block:: python try: # Vorschaugröße und -format konfigurieren preview_config.size = (800, 600) preview_config.format = 'XRGB8888' #. Startet die Kamera-Vorschau im QTGL-Modus, einem grafischen Vorschau-Modus. .. code-block:: python try: ... # Die Kamera-Vorschau im QTGL-Modus starten camera.start_preview(Preview.QTGL) ... #. Definiert die Videokonfiguration mit einer Bildgröße von 800×600 Pixeln und einer Bildrate von 40 Bildern pro Sekunde. .. code-block:: python try: ... # Videokonfiguration mit Größe, Bildrate und Puffern festlegen conf = {'size': (800, 600)} controls = {'FrameRate': 40} config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12) ... #. Erstellt einen Videoencoder mit einer angegebenen Bitrate von 10 Mbit/s im H.264-Format. Legt den Dateipfad für die Videoausgabe fest und speichert das Video als ``my_video.mp4`` im Home-Verzeichnis des Benutzers. .. code-block:: python try: ... # Videoencoder mit angegebener Bitrate erstellen encoder = H264Encoder(bitrate=10000000) # Ausgabedatei für das Video festlegen output = FfmpegOutput(f'{user_home}/my_video.mp4') ... #. Konfiguriert die Kamera mit den definierten Videoeinstellungen, startet die Aufnahme mit dem angegebenen Encoder und der Ausgabedatei, nimmt 10 Sekunden auf und stoppt dann die Aufnahme. .. code-block:: python try: ... # Konfigurieren und Aufnahme starten camera.configure(config) camera.start_recording(encoder, output) # 10 Sekunden lang aufnehmen time.sleep(10) # Die Aufnahme stoppen camera.stop_recording() #. Dieser Codeblock behandelt ein KeyboardInterrupt (z. B. Strg+C), indem er die Kamera-Vorschau stoppt. Die ``pass``-Anweisung fängt die Ausnahme ab, ohne weitere Aktionen auszuführen. .. code-block:: python except KeyboardInterrupt: # Die Kamera-Vorschau stoppen, wenn ein KeyboardInterrupt auftritt camera.stop_preview() pass