Mit Raspberry Pi OS Bullseye hat sich der Umgang mit dem RP-Kameramodul grundlegend geändert. Positiv: Die erforderliche Konfiguration erfolgt jetzt automatisch. Negativ: Die neuen libcamera-Kommandos sind inkompatibel zu den langjährig etablierten Kommandos raspistill
und raspivid
, die nicht mehr zur Verfügung stehen.
Konfiguration in /boot/config.txt
In der Vergangenheit musste das Kameramodul zurerst im Konfigurationsprogramm aktiviert werden. Auf diesen Schritt können Sie jetzt verzichten, weil /boot/config.txt
einen neuen Eintrag enthält:
# neu in /boot/config.txt (für Raspberry Pi 4)
# automatically load overlays for detected cameras
camera_auto_detect=1
Bei älteren Raspberry-Pi-Modellen (3 und früher) ist weiterhin eine manuelle Konfiguration durchgeführt werden, die im Detail hier beschrieben ist.
# manuelle Konfiguration (Raspberry Pi 3 und früher)
# für V1 camera (OV5647)
dtoverlay=ov5647
# für V2 camera (IMX219)
dtoverlay=imx219
# für HQ camera (IMX477)
dtoverlay=imx477
libcamera-Tools
Hinter den Kulissen ist jetzt der libcamera
-Treiber des Linux-Kernels für die Ansteuerung der Kamera zuständig. Das ist insofern erfreulich, als dies eine standardkonforme Lösung ohne proprietären Code ist. Allerdings sind die neuen Treiber inkompatibel zu den in Vergangenheit sehr beliebten Kommandos raspistill
und raspivid
. Diese Kommandos können nicht mehr installiert werden. Stattdessen gibt es fünf neue Kommandos:
libcamera-hello
zeigt für eine Sekunde ein Preview-Fenster mit dem Kamerainhalt an. Es werden aber keine Daten gespeichert.-
libcamera-jpg -o test.jpg
zeigt eine Sekunde lang ein Preview-Fenster auf und speichert dann ein Bild im JPEG-Format intest.jpg
. -
libcamera-raw
ermöglicht die Aufnahme von Kamera-Frames im RAW-Modus. -
libcamera-still
nimmt ein Foto auf und bietet ähnliche Funktionen wieraspistill
. -
libcamera-vid
nimmt eine Video-Sequenz auf und bietet ähnliche Funktionen wieraspivid
.
Bei allen Kommandos liefert die Option --help
eine schier endlose Liste von Optionen. Es gibt keine man
-Pages, dafür aber umfassende Online-Dokumentation.
Fotos aufnehmen (libcamera-still)
Die folgende Liste zählt die wichtigsten Optionen von libcamera-still
auf. (Es gibt unzählige weitere!)
-o dateiname
: Ausgabedatei-n
: kein Preview-Fenster anzeigen-f
: Preview-Fenster im Fullscreen-Modus anzeigen--width n
: gewünschte Breite des Bilds in Pixel--height n
: gewünschte Höhe des Bilds in Pixel-t n
: Timeout in Millisekunden.-t 1
nimmt das Bild so schnell wie möglich auf.--encoding jpg|png|rgb|bmp|yuv420
: bestimmt das Ausgabeformat (standardmäßig gilt JPEG)-q n
: bestimmt die Qualität für das JPEG-Format (standardmäßig 93)
Beispiel:
libcamera-still --width 1280 --height 800 -n 1 -t 1 -o out.jpg
Videos aufnehmen (libcamera-vid)
-o dateiname
: Ausgabedatei-t n
: gewünschte Aufnahmezeit in Millisekunden--codec h264|mjpeg|yuv420
: legt den gewünschten Codec fest. Standardmäßig gilth264
.--save-pts timestamps.txt
: speichert zusätzlich Frame-Informationen, damit das Video anschließend weiterverarbeitet werden kann.
Das folgende Kommando nimmt ein zwei Sekunden langes Video auf:
libcamera-vid --o video.h264 -t 2000
Die Videodatei kann anschließend mit vlc
angesehen werden.
Die folgenden beiden Kommandos nehmen zuerst ein Video auf und wandeln diese anschließend in eine MKV-Datei um:
libcamera-vid -o test.h264 --save-pts timestamps.txt -t 5000
mkvmerge -o test.mkv --timecodes 0:timestamps.txt test.h264