Fotos und Videos mit den libcamera-Tools aufnehmen

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 in test.jpg.

  • libcamera-raw ermöglicht die Aufnahme von Kamera-Frames im RAW-Modus.

  • libcamera-still nimmt ein Foto auf und bietet ähnliche Funktionen wie raspistill.

  • libcamera-vid nimmt eine Video-Sequenz auf und bietet ähnliche Funktionen wie raspivid.

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 gilt h264.
  • --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

Quellen und Links