gstreamer – Video-Pipelines für phyCAM & Vision Kits

Mit unserem Ezpire-Baustein für GStreamer erhalten Sie vorkonfigurierte Video-Pipelines für alle unterstützten phyCAM-Module in den Vision-BSPs. Die Demo-Skripte für Live-Streaming, JPG-/RAW-Speicherung und mehr sind direkt im phytec-vision-image integriert und sofort einsatzbereit. Nutzen Sie sie als Basis für Ihre eigene Bildverarbeitung oder Videoanwendungen.

Was ist GStreamer?

GStreamer ist ein Open-Source-Multimedia-Framework für Linux, das sich hervorragend für Embedded-Videoanwendungen eignet. Es erlaubt das Erstellen flexibler Pipelines zur Erfassung, Verarbeitung, Kodierung und Ausgabe von Video- und Audiodaten.

Im PHYTEC-Kontext verwendet GStreamer die V4L2 (Video4Linux2) Schnittstelle, um phyCAM-Kameras anzusteuern. Die phytec-vision-images enthalten vorkonfigurierte Pipelines für alle unterstützten phyCAM-Module (VM-x16, VM-x17, VM-x20, VM-x24, etc.) mit detaillierten einfach lesbaren Skripten.

GStreamer out-of-the-box

Wir nehmen Ihnen die Komplexität der Kamera-Einbindung ab. GStreamer ist bereits vollständig in unsere phytec-vision-images (Vision-BSPs) integriert und für alle unsere Video Kits optimiert. Sie erhalten eine Sammlung von sofort lauffähigen Demo-Skripten, die die wichtigsten Video-Use-Cases abdecken:

  • Live-Video-Streaming: Geben Sie das Kamera-Signal direkt und flüssig auf einem angeschlossenen Display (z.B. via HDMI) aus.

  • Bild- und Videoerfassung: Speichern Sie Bilder nahtlos als komprimierte JPGs oder im verlustfreien RAW-Format in voller Sensorauflösung.

  • Sensor-spezifische Optimierung: Wir liefern maßgeschneiderte Konfigurationen für unsere verschiedenen phyCAM-Module. Die Skripte erkennen den angeschlossenen Kameratyp automatisch (Color/Monochrom) und passen die Parameter optimal an.

  • Hardware-Beschleunigung (ISP):  Zum verwenden eines vorhandenen Image Signal Processor (ISP) werden Konfigurationsdateien benötigt. Ausgewählte Board-Level-Kameras aus unserer phyCAM-Serie sind bereits für die Verwendung ausgewählter Prozessorboards vorkalibriert. Damit lassen sich bereits grundlegende ISP-Funktionen direkt nutzen. Dazu zählen unter anderen Funktionen wie: DemosaicDenoise/Sharpen Filter, AEC (Auto Exposure Control), AWB (Auto White Balance), BLC (Black Level Correction), Defect Pixel Cluster Correction und WDR3 (Wide Dynamic Range).

  • Multi-Kamera-Setups: Out-of-the-box Unterstützung für den synchronen Betrieb von zwei Kameras (Dual-Camera), ideal für komplexe Machine-Vision-Szenarien. Für bestimmte Prozessoren die die Möglichkeit der "virtual channel" Technologie besitzen bieten wir entsprechen Unterstützung an. Damit lassen sich an einem MIPI CSI-2 Kanal auch mehrere Kameras anschließen.

Einfache Konfigurationsscripte ermöglichen die Voreinstellungen in der Kamera und im Kamerainterface des Prozessors. Dem Anwender steht dann, dass nach seinen Wünschen konfigurierte Bild/Stream als V4L2-Device zur Verfügung.

Technischer Deep-Dive

Unsere Vision-Images nutzen V4L2-Subdevices in Kombination mit media-ctl zur dynamischen Kamera-Konfiguration (Routing und Format-Negotiation). GStreamer holt dann die Bilddaten direkt vom video-Device via v4l2 ab. Jeder unserer  phyCAM-Module (VM-x16, VM-x17, VM-x20, VM-x24, ...) ist dann ein video-Device zugeordnet. Die mitgelieferten Shell-Skripte im Verzeichnis /gstreamer-examples/ der Root-Partition abstrahieren die Komplexität des Aufrufs.

  • Live-Streaming (Wayland/Frame-Buffer): Beim Aufruf von cam-fbdev_1280x720.shi wird zuerst das Konfigurationsscript aufgerufen. Dann werden bestimmte Eigenschaften in der Kamera mittels v4l2-ctrl gesetzt. Und letztendlich wird  eine GStreamer-Pipeline aufgebaut, die den V4L2-Videostream über einen geeigneten Sink (z.B. waylandsink oder direkten Framebuffer) auf dem Display ausgibt, optimiert für minimale CPU-Last.

  • Raw- und JPG-Capture: Skripte wie cam-save_jpg_full_res.sh rufen Pipelines auf, die das Bildmaterial erfassen, über jpegenc komprimieren und über filesink speichern. Bei cam-save_raw_full_res.sh werden die rohen Sensordaten ohne Processing auf das Dateisystem gedumpt.

Ein Blick unter die Haube zeigt, wie GStreamer die SoC-Hardware optimal auslastet. Für ein VM-016 Modul (AR0144) sieht eine effiziente H.264-Encoding-Pipeline beispielsweise so aus:
 
bash
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-bayer,format=grbg,width=1280,height=800 ! bayer2rgbneon ! queue ! vpuenc_h264 ! rtspclientsink

Hier werden die Bayer-Rohdaten über das hochoptimierte Plugin bayer2rgbneon (unter Nutzung der ARM NEON-Befehlssatzerweiterung) konvertiert. Das konvertierte Bild wird dann in den dedizierten Hardware-Video-Encoder des NXP SoCs (vpuenc_h264) eingespeist, wodurch CPU-Ressourcen für die eigentliche Applikation frei bleiben.

Das Setup der V4L2-Nodes geschieht modular. Kameras werden beim Booten via U-Boot Overlays in der bootenv.txt geladen (z.B. overlays=imx8mp-isi-csi1.dtbo imx8mp-vm016-csi1.dtbo).
Sofern ein ISP vorhanden ist bieten wir in den mit "isp" gekennzeichneten Verzeichnis erweiterte Pipelines an. Hierbei wird der V4L2-Stream nicht direkt abgegriffen, sondern durch den Hardware-ISP des NXP-Chips geroutet. GStreamer greift dann auf /dev/video[X]zu, wo bereits fertige YUV/RGB-Bilder anliegen, bei denen z.B. Auto-Exposure, Auto-White-Balance und Debayering bereits latenzfrei in Hardware angewendet wurden.

Empfohlene Hardware

Um unsere System on Modules und phyCAM-Module in der Praxis zu evaluieren, bieten wir passgenaue Embedded Vision Entwicklungskits an. Diese Bundles enthalten alles, was Sie für den Start benötigen: System on Module (SoM), Baseboard, Kamera, Objektiv und ein vorinstalliertes Vision-BSP mit allen GStreamer-Beispielen.

Für anspruchsvolle Videoanwendungen empfehlen wir insbesondere:

Unsere Referenz für Embedded Vision – mit Dual-ISP und dedizierter KI-Einheit (NPU) für performante Multi-Kamera-Setups.

Hocheffizient und kostengünstig. Die UI läuft über das Software/DRM-Backend ohne Notwendigkeit einer starken 3D-GPU.

Weitere Vision-Setups für andere SoCs und Formfaktoren finden Sie auf unserer Imaging Kit-Übersichtsseite.

Das PHYTEC phyCAM-Portfolio
Die GStreamer-Integration entfaltet ihr volles Potenzial durch unser
 umfangreiches Angebot an industrietauglichen Kameramodulen (phyCAM - Serie). Egal ob Rolling-Shutter oder Global-Shutter, monochrome oder color, 1 Megapixel bis 4k Auflösungen  – unsere Hardware und Software-Treiber sind perfekt aufeinander abgestimmt.

Welches Setup passt am besten zu Ihren Anforderungen, Kameramodule können z.B. durch das standardisierte phyCAM-Interface einfach ausgetauscht werden. 
Sprechen Sie uns an – wir helfen Ihnen gerne bei der Auswahl der richtigen Hardware.

Getting Started

Starten Sie in wenigen Schritten mit GStreamer und Ihrer phyCAM.

Alle GStreamer-Demo-Skripte sowie die benötigten Kameratreiber sind bereits in unserem speziellen phytec-vision-image integriert. Je nachdem, welche Hardware Sie nutzen, gestaltet sich der Einstieg wie folgt:

Wenn Sie ein PHYTEC Imaging Kit nutzen:
Haben Sie eines unserer Vision-Kits (z.B. das phyBOARD-Pollux Imaging Kit) erworben, müssen Sie sich um nichts weiter kümmern. Das phytec-vision-image ist auf diesen Kits bereits ab Werk vorinstalliert. Sie können direkt booten und loslegen.

Wenn Sie ein Standard-Kit oder einen Single Board Computer (SBC) nutzen:
Falls Sie ein reguläres Development Kit oder ein Standard-Board verwenden, können Sie das Vision-Image ganz einfach selbst aufspielen. Gehen Sie dazu auf der PHYTEC-Website auf die Produktseite Ihres Moduls (z.B. i.MX 8M Plus) und navigieren Sie zum Bereich Downloads. Dort finden Sie das aktuelle phytec-vision-image zum Download und Flashen auf eine SD-Karte.

Wo finde ich die GStreamer-Skripte und die Anleitung?
Sobald das Vision-Image auf Ihrer Hardware läuft, nutzen Sie unseren Getting Started Guide, um die GStreamer-Pipelines zu starten.

  • Dokumentation finden: Gehen Sie auf die Produktseite Ihres Moduls und navigieren Sie zu Downloads > Image Processing > Quick Start Guides with cameras. Laden Sie dort den "Getting Started Guide phyCAM" herunter.

  • GStreamer-Demos starten: In einem separatem Abschnitt dieser Dokumente finden Sie eine detaillierte Übersicht und Anleitung zu allen von uns vorbereiteten GStreamer-Demo-Skripten (wie Live-Streaming, Bilderfassung und hardwarebeschleunigtes Encoding).