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.
Es ist definitiv praktisch, ein gesamtes Kit zu kaufen, hier ist der Link:
Name |
INHALTE DIESES KITS |
LINK |
---|---|---|
Raphael Kit |
337 |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENÜBERSICHT |
KAUF-LINK |
---|---|
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
Importiert die notwendigen Bibliotheken und Klassen. Die Bibliothek
picamera2
wird für die Kamerasteuerung verwendet,H264Encoder
für die Videoenkodierung undFfmpegOutput
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
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}')
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
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'
Startet die Kameravorschau im QTGL-Modus, einem grafischen Vorschaumodus.
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.
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.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.
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.except KeyboardInterrupt: # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs camera.stop_preview() pass