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

../_images/3.3.2_photograph_list.png

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

Name

INHALTE DIESES KITS

LINK

Raphael Kit

337

Raphael Kit

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

KOMPONENTENÜBERSICHT

KAUF-LINK

Kameramodul

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

Schritt 2: Überprüfen Sie, ob die Kamera aktiviert ist. Anweisungen finden Sie unter: Kamera-Schnittstelle aktivieren.

Schritt 3: Öffnen Sie ein Terminal und wechseln Sie in das Verzeichnis des Codes.

cd ~/raphael-kit/python-pi5

Schritt 4: Ausführen.

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

Bemerkung

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

    #!/usr/bin/env python3
    
    import time
    von picamera2 import Picamera2, Preview
    von picamera2.encoders import H264Encoder
    von picamera2.outputs import FfmpegOutput
    import os
    
  2. Ruft den Login-Namen des aktuellen Benutzers und den Pfad zu dessen Home-Verzeichnis ab.

    # 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}')
    
  3. Erstellt eine Instanz der Klasse Picamera2 und ruft die Standard-Vorschaueinstellung ab.

    # Create a Picamera2 instance
    camera = Picamera2()
    # Retrieve the default preview configuration
    preview_config = camera.preview_configuration
    
  4. Stellt die Größe und das Format der Kameravorschau ein. Die Größe wird auf 800x600 Pixel festgelegt, das Format auf XRGB8888.

    try:
        # Configure preview size and format
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Startet die Kameravorschau im QTGL-Modus, einem grafischen Vorschaumodus.

    try:
        ...
    
        # Start the camera preview in QTGL mode
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Definiert die Videokonfiguration mit einer Bildgröße von 800x600 Pixeln und einer Bildrate von 40 Bildern pro Sekunde.

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

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

    except KeyboardInterrupt:
        # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs
        camera.stop_preview()
        pass