.. 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_pi5: 3.1.2 Videomodul ===================== Einführung ----------------- Zusätzlich zur Aufnahme von Fotos kann das Kameramodul auch zur Aufzeichnung von Videos verwendet werden. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir die folgenden Komponenten. .. image:: ../python_pi5/img/3.3.2_photograph_list.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 - INHALTE DIESES KITS - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können diese auch einzeln über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENÜBERSICHT - KAUF-LINK * - :ref:`cpn_camera_module` - |link_camera_buy| Experimentelle Verfahren ------------------------------ **Schritt 1:** Wechseln Sie zum Raspberry Pi Desktop. Für eine bessere Erfahrung 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 eine detaillierte Anleitung siehe :ref:`remote_desktop`. **Schritt 2:** Öffnen Sie ein Terminal und wechseln Sie in das Verzeichnis des Codes. .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3:** Ausführen. .. code-block:: sudo python3 3.1.2_VideoModule_zero.py Führen Sie den Code aus, um die Aufnahme zu starten. 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_zero.py`` im Pfad ``~/raphael-kit/python-pi5`` mit einer Python-IDE öffnen, den Ausführen-Button klicken, um es zu starten, und den Code mit dem Stopp-Button beenden. Wenn Sie Fotos an Ihren PC senden möchten, siehe :ref:`filezilla`. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **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 notwendigen Bibliotheken und Klassen. Die Bibliothek ``picamera2`` wird für die Kamerasteuerung verwendet, ``H264Encoder`` für die Videoenkodierung und ``FfmpegOutput`` für die Definition der Videoausgabedatei. .. code-block:: python #!/usr/bin/env python3 import time von picamera2 import Picamera2, Preview von picamera2.encoders import H264Encoder von picamera2.outputs import FfmpegOutput import os #. Ruft den Login-Namen des aktuellen Benutzers und den Pfad zu dessen Home-Verzeichnis ab. .. code-block:: python # 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}') #. Erstellt eine Instanz der Klasse ``Picamera2`` und ruft die Standard-Vorschaueinstellung ab. .. code-block:: python # Create a Picamera2 instance camera = Picamera2() # Retrieve the default preview configuration preview_config = camera.preview_configuration #. Stellt die Größe und das Format der Kameravorschau ein. Die Größe wird auf 800x600 Pixel festgelegt, das Format auf ``XRGB8888``. .. code-block:: python try: # Configure preview size and format preview_config.size = (800, 600) preview_config.format = 'XRGB8888' #. Startet die Kameravorschau im QTGL-Modus, einem grafischen Vorschaumodus. .. code-block:: python try: ... # Start the camera preview in QTGL mode camera.start_preview(Preview.QTGL) ... #. Definiert die Videokonfiguration mit einer Bildgröße von 800x600 Pixeln und einer Bildrate von 40 Bildern pro Sekunde. .. code-block:: python try: ... # 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) ... #. Erstellt einen Videoencoder mit einer festgelegten Bitrate von 10 Mbps, unter Verwendung des H.264-Encoding-Formats. Legt den Ausgabedateipfad für das Video fest, speichert es als ``my_video.mp4`` im Home-Verzeichnis des Benutzers. .. code-block:: python try: ... # 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') ... #. 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: ... # 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() #. Dieser Block von Code behandelt ein KeyboardInterrupt (z. B. Ctrl+C), indem die Kameravorschau gestoppt wird. Das ``pass`` Statement wird verwendet, um die Ausnahme zu behandeln, ohne etwas anderes zu tun. .. code-block:: python except KeyboardInterrupt: # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs camera.stop_preview() pass