Bemerkung

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 [hier] und treten Sie heute bei!

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.

../_images/photo1.png

Es ist definitiv praktisch, ein gesamtes Kit zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Kameramodul

KAUFEN

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 Remote Desktop.

Schritt 2: Öffnen Sie ein Terminal und navigieren Sie zum Ordner des Codes.

cd ~/raphael-kit/python/

Schritt 3: Ausführen.

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.

Bemerkung

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 FileZilla Software.

Code

#!/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

  1. 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.

    #!/usr/bin/env python3
    
    import time
    from picamera2 import Picamera2, Preview
    from picamera2.encoders import H264Encoder
    from picamera2.outputs import FfmpegOutput
    import os
    
  2. Ruft den aktuellen Benutzernamen sowie den Pfad zum Home-Verzeichnis des Benutzers ab.

    # Aktuellen Benutzernamen abrufen
    user = os.getlogin()
    # Pfad zum Home-Verzeichnis des Benutzers abrufen
    user_home = os.path.expanduser(f'~{user}')
    
  3. Erstellt eine Instanz der Picamera2-Klasse und ruft die Standard-Vorschaukonfiguration ab.

    # Eine Picamera2-Instanz erstellen
    camera = Picamera2()
    # Die Standard-Vorschaukonfiguration abrufen
    preview_config = camera.preview_configuration
    
  4. Legt die Größe und das Format der Kamera-Vorschau fest. Die Größe wird auf 800×600 Pixel gesetzt, das Format auf XRGB8888.

    try:
        # Vorschaugröße und -format konfigurieren
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Startet die Kamera-Vorschau im QTGL-Modus, einem grafischen Vorschau-Modus.

    try:
        ...
    
        # Die Kamera-Vorschau im QTGL-Modus starten
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Definiert die Videokonfiguration mit einer Bildgröße von 800×600 Pixeln und einer Bildrate von 40 Bildern pro Sekunde.

    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)
    
        ...
    
  7. 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.

    try:
        ...
    
        # Videoencoder mit angegebener Bitrate erstellen
        encoder = H264Encoder(bitrate=10000000)
        # Ausgabedatei für das Video festlegen
        output = FfmpegOutput(f'{user_home}/my_video.mp4')
    
        ...
    
  8. 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.

    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()
    
  9. 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.

    except KeyboardInterrupt:
        # Die Kamera-Vorschau stoppen, wenn ein KeyboardInterrupt auftritt
        camera.stop_preview()
        pass