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: Demosaic, Denoise/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).