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.
Es ist definitiv praktisch, ein gesamtes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
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
Importiert die benötigten Bibliotheken und Klassen. Die Bibliothek
picamera2wird zur Kamerasteuerung verwendet,H264Encoderfür die Videoenkodierung undFfmpegOutputzur 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
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}')
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
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'
Startet die Kamera-Vorschau im QTGL-Modus, einem grafischen Vorschau-Modus.
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.
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.mp4im 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') ...
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()
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