Als Software-Schnittstelle dient »GStreamer«. Das GStreamer-Projekt wurde 1999 gegründet und ab Januar 2001, dem Release 0.10.0, mit der Unterstützung durch RidgeRun, einem Embedded-Linux-Unternehmen, vor allem für Mediaanwendungen auf Mobiltelefonen weiterentwickelt. Seitdem konnte das Projekt zunehmend Support in der Open-Source-Community finden und liegt inzwischen im Release 1.16 vor. GStreamer ist Open-Source-Software entsprechend den Bedingungen der »GNU Lesser General Public License« (LGPL).
Die Open-Source-Software GStreamer verarbeitet Medienströme durch Prozesselemente in Form von Plug-ins in einer Pipeline. Elemente werden dabei über Pads miteinander verbunden. In der Regel geht eine Verbindung vom src-Pad (Source, Quelle) eines Elementes auf den sink-Pad (Sink, Senke) des Nachfolgelementes. Dabei wird die Datenkommunikation zwischen sink- und source-Pads über Capabilities ausgetauscht und verhandelt. Ein einfaches Beispiel dazu zeigt Bild 3: Eine Quelle videotestsrc (Testbild) ist mit einer Senke autovideosink (Display) verbunden. Um diese Pipeline zu
realisieren, gibt es in der GStreamer-Umgebung das Commandline-Tool »gst-launch« mit dem sich die Pipeline folgendermaßen aufsetzen lässt:
gst-launch-1.0 videotestsrc ! autovideosink
Der Befehl »gst-launch-1.0« nutzt das Ausrufezeichen zur Verbindung zweier Elemente. Bei mehr als zwei Elementen enthält die Kommandozeile entsprechend weitere Elemente, die mit !-Zeichen verkettet sind.
Teknique hat nun die GStreamer-Umgebung durch entsprechende Plug-ins und Applikationen erweitert, die wiederum auf dem eingebetteten Ambarella-SDK basieren. Damit lässt sich
ein Videostream über das lokale Netzwerk beispielsweise mit folgendem Kommando initiieren:
gst-launch-1.0 oclea_video_src ! video/x-h264, width=1920, height=1080, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.100.123
Die Videoquelle »oclea_video_src« wird hier mit Konfiguration 1920 x 1080 px, also Full-HD und Bytestream, auf den H.264-Encoder gelegt. Dieser exportiert eine RTP-H.264-Payload und streamt über UDP auf den Host mit der lokalen IP-Adresse 192.168.100.123. Auf dem Ziel-Host lässt sich der Stream dann beispielsweise mit dem VLC-Player darstellen, aber auch die GStreamer-Umgebung bietet eine Möglichkeit zur Darstellung:
gst-launch-1.0 rtpbin name=rtpbin udpsrc caps=’application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264’ port=5004 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtph264depay ! decodebin ! videoconvert ! autovideosink
GStreamer setzt auf eine Plug-in-Architektur; seine Funktion ist meist als »shared library« implementiert (Bild 4). Damit ist das Framework weitgehend Plattform-agnostisch. Das heißt, es kann in unterschiedlichen Betriebssystem- und Mediaumgebungen zum Einsatz kommen und eignet sich damit auch für den Einsatz in einer Ambarella-Modulkamera. Teknique verhilft Ambarella-basierten Kameras auf diese Weise zu einer Beschleunigung bei der Anwendungsentwicklung. Komplexe Prozesse der Bildverarbeitung wie das Aufsetzen einer Image-Pipeline oder eines H.264-Codecs sind nun als Skript-Kommandos verfügbar und ganze Anwendungsketten (Pipelines) lassen sich in einer einzigen Zeile beschreiben.
In der aktuellen Revision r 0.9.2 des Oclea-SDKs sind zwar noch nicht alle Funktionen aus dem Ambarella-SDK verfügbar. Teknique kündigt aber eine vollständige Implementierung zum demnächst erscheinenden Release r 1.0 an. Das Scripting mit »gst-launch-1.0« ist eine schnelle Methode zur Evaluierung von Kamerafunktionen, aber weniger das Mittel der Wahl zur Entwicklung einer Anwendung. Dafür stellt Teknique ein Docker-Image zur Verfügung, das neben den Bibliotheken die notwendige Build-Umgebung mit CMAKE bereitstellt. Installiert auf einem Entwicklungs-Host mit Linux-OS (empfohlen wird Ubuntu) ist damit die in C codierte Applikationsentwicklung möglich.
Modulkameras von Teknique lassen sich aus einem morphologischen Baukasten einzelner Komponenten kombinieren – im S5L-µSoM-Universum gibt es dazu eine Reihe von Bildsensormodulen mit Optiken zum Aufstecken auf das S5L-Modul samt Trägerplatte und schließlich Basismodule mit unterschiedlichen Schnittstellen wie etwa verdrahtetem oder drahtlosem LAN.
Mit Außenabmessungen von 38 x 38 mm ergibt sich für eine komplette Kamera ohne Optik eine Bauhöhe von etwa 40 mm und damit eine nahezu kubische IP-Kamera. Der Stapel lässt sich außerdem über Distanzbolzen zu einem stabilen System verschrauben und in einem Außengehäuse befestigen (Bild 6). Mit einer Leistungsaufnahme von unter 5 W und einem Betriebstemperaturbereich von -20 .. + 85 °C ist eine Zwangskühlung in den meisten Fällen entbehrlich, sodass sich auch kleine Box-Kamerabauformen realisieren lassen.
Das S5L-µSoM-System bietet darüber hinaus auch die Möglichkeit zur Gestaltung »zweiäugiger« Kameras. Da der S5L auf seinem Vin-Port zwei Bildsensoren unterstützt, sind auf dem SoM-Trägerboard (nicht dargestellt) entsprechend zwei Flex-Steckverbinder ausgeführt. So sind Kameras mit zwei gleichen Bildsensoren möglich, zum Beispiel für eine 270°-Überwachung oder mit zwei unterschiedlichen Sensorspezifikation, etwa für optimierten Tag- beziehungsweise Nacht-Einsatz.
Die Oclea SoMs erlauben einen schnelleren Marktzugang mit verkürzter Entwicklungszeit und verringertem Entwicklungsrisiko bei umfangreichen Features wie reichhaltiger ISP-Funktion und CVFlow-CNN-Beschleunigung. Die derzeit verfügbaren µSoMs aus der S5L-Reihe werden in Kürze durch eine SoM-Familie auf Basis des Ambarella CV22-SoCs erweitert, ermöglichen damit CNN-basierte Applikationen im Bereich der Videoanalytics und eröffnen diese Technik für Kameraentwicklungen auch im kleineren und mittleren Stückzahlensegment.
Stefan Tauschek studierte Nachrichtentechnik an der Fachhochschule München und arbeitete nach seinem Abschluss über mehrere Jahre in der Entwicklung von Multimediakomponenten, Videoverarbeitung und Streaming-Media-Verfahren. Heute ist er Applikationsingenieur und Technologieberater bei Macnica und unterstützt Industriekunden bei der Realisierung von Projekten aus dem Bereich Bildverarbeitung, Netzwerke und Industrieautomatisierung.