Das Internet der Dinge boomt. Damit steigt auch die Zahl der kamerabasierten vernetzten Geräte, die Mediendaten in Echtzeit produzieren und sie an einen PC oder ein Smartphone senden können.
Doch es gibt einen Haken.
Die meisten Nutzer brauchen keine eigenständige Anwendung, um Audio- oder Videoclips abzuspielen. Sie können hierfür ihre Browser nutzen. Um eine IP-Kamera in einen Browser zu integrieren, könnte man Adobe Flash verwenden. Doch ab Ende 2020 wird Adobe Flash von den wichtigsten Browsern nicht mehr unterstützt. Darüber hinaus gibt es HLS und MPEG-Dash. Doch diese sind nicht auf Live-Streaming mit niedriger Latenzzeit zugeschnitten. Und schließlich gibt es WebRTC – eine relativ neue Technologie, die im Moment vielleicht noch nicht die maximale Geräteabdeckung bietet, aber in Bezug auf die Leistung ihre Wettbewerber leicht übertrifft.
Dieser Artikel gibt Antworten auf die Fragen: Was sind die Vorteile von WebRTC? Was sind potenzielle Use Cases von WebRTC im IoT? Wie kann diese Technologie mit vernetzten Geräten integriert werden?
WebRTC wurde von Global IP Solutions, dem Pionier für Videokonferenzen und VoIP, erstellt und 2010 von Google übernommen.
WebRTC gilt inzwischen als die Lösung für den Transfer von Mediendateien in Echtzeit. Offensichtliche Use Cases dieser Technologie sind daher Anwendungen für Audio- und Videokonferenzen sowie Tools für die Zusammenarbeit im Team.
Um eine Sitzung zwischen zwei Nutzern zu beginnen, sollten sich die Browser gegenseitig lokalisieren und die Erlaubnis erhalten, Mediendateien in Echtzeit auszutauschen.
Eine Herausforderung stellen dabei die Network Access Translation (NAT)-Geräte oder Firewalls dar, die die Laptops oder Smartphones schützen. Im Gegensatz zu HTTPS-Websites, deren Standort dem gesamten Internet bekannt ist, verfügen Laptops und Smartphones nicht über statische Webadressen.
Für einen Telefon- oder Videoanruf mit einem Nutzer außerhalb des Heimnetzwerks verwendet WebRTC Session Traversal Utilities for NAT (STUN) und Traversal Using Relays around NAT (TURN) Server zusammen mit Signalisierungs-/Kommunikationsprotokollen. Zu den Kommunikationsprotokollen gehören:
Vor WebRTC basierte die Echtzeit-Medienkommunikation auf C/C++. Dies verzögerte die Entwicklung maßgeschneiderter Konferenz- und Kollaborationstools und erhöhte ihre Kosten. Obwohl WebRTC nach wie vor C/C++ verwendet, müssen sich Entwickler nicht mehr in diesen Layers vergraben – WebRTC hat eine JavaScript-API und diese reicht aus, um Anwendungen zu erstellen, die mit Browsern interagieren.
Beim Konzept des Internet der Dinge geht es um Datenaustausch in Echtzeit – und genau das kann WebRTC besonders gut.
Die Technologie könnte zum Beispiel eine willkommene Ergänzung zu einem RFID-basierten Sicherheitssystem für Einzelhandelsgeschäfte sein. Zusätzlich zu den Warensicherungsetiketten und EAS-Antennen könnte die Lösung eine IP-Kamera haben: Sie überwacht den Kundenverkehr und streamt Videodaten in Echtzeit an eine Webanwendung auf dem Computer des Sicherheitsmanagers. Wenn ein gestohlener Artikel den Alarm auslöst, kann der Manager das Signal mit Kameraaufnahmen zuordnen und den Ladendieb identifizieren.
Man kann das WebRTC Native Code Package zusammenstellen, um eine Peer-Verbindung ohne einen zwischengeschalteten Media Server herzustellen. WebRTC ist jedoch eine browserbasierte Technologie, d. h. sie wird von den meisten IoT-Geräten und Embedded Systems nicht direkt unterstützt.
In Bezug auf das Thema Smarte Kameras ist zu berücksichtigen: Auf die Daten, die von intelligenten Sicherheitssystemen außerhalb eines privaten Netzwerks erzeugt werden, kann in der Regel nicht zugegriffen werden. Dadurch wird verhindert, dass Nutzer Industrieanlagen und vernetzte Wohnungen aus der Ferne überwachen.
Aus diesem Grund bietet derzeit keine IoT-Lösung für Unternehmen oder Verbraucher WebRTC als Standard an.
GStreamer ist ein freies Pipeline-basiertes Framework zur Erstellung von Multimedia-Streaming-Anwendungen für Desktop, vernetzte Geräte und Server. Es hat seinen Funktionsumfang mit einer nativen WebRTC-API ergänzt. Mit GStreamer kann man wesentlich flexibler und einfacher arbeiten als mit den offiziellen WebRTC Native APIs.
GStreamer soll einwandfreie Leistung ermöglichen. Das Framework kann man mit einem Wasserleitungssystem vergleichen. Die Mediendaten sind das Wasser in den Rohren und die GStreamer-Pipelines sind die Wasserleitungen. Diese Wasserleitungen sind in der Lage, die Qualität und Quantität des Wassers auf dem Weg von der öffentlichen Wasserversorgung (Gerät Eins) zur privaten Wasserversorgung (Gerät Zwei) zu verändern.
Angenommen, das Quellgerät kann Videodateien lesen. Wir können einen Rohrbogen (GStreamer demuxer) bauen, um die ausgehenden Daten in Audio- und Videodatenströme zu trennen. Die Daten werden über h264 (Video) und Opus (Audio) in der Pipeline dekodiert und an das Zielgerät oder an die Cloud übertragen, wo sie mit ML-Algorithmen analysiert werden können.
Bei GStreamer werden diese funktionalen Rohrbögen „Elemente“ genannt. Sie können in 2 Arten unterteilt werden: Quellen-Elemente erzeugen Daten und Senken-Elemente nehmen Daten an. Die Elemente wiederum haben Pads – Schnittstellen zur Außenwelt, die es Entwicklern ermöglichen, Elemente nach ihren Fähigkeiten miteinander zu verbinden. Darüber hinaus verfügt GStreamer über integrierte Synchronisationsmechanismen. Damit werden Audio- und Video-Samples in der richtigen Reihenfolge und zum richtigen Zeitpunkt abgespielt.
Mit WebRTC und GStreamer können zum Beispiel intelligentere Smart-Home-Lösungen und Systeme für Unternehmenssicherheit aufgebaut werden. Einige Beispiele, wie GStreamer für die Entwicklung von Embedded-Software genutzt werden kann:
Je mehr Embedded-Software-Entwickler GStreamer entdecken, desto mehr WebRTC-basierte vernetzte Produkte werden wir bald sehen. Beispiele sind industrielle Lösungen für Fernwartung von Geräten, Smart Home-Produkte, telemedizinische Anwendungen, intelligente Kraftfahrzeuge, die Echtzeit-Telemetriedaten sammeln, und Wearables.
Dank RESTful APIs können Drittanbieter relativ einfach eine WebRTC-basierte Kommunikation starten und Sensordaten von vernetzten Geräten verwenden, um Warnmeldungen auszulösen oder Audioanrufe und Videositzungen zu organisieren. WebRTC ist eine neue Sicherheitsstufe im Bereich IoT-Lösungen und kann als sicherer Kanal zur Datenübertragung genutzt werden. Und schließlich gibt es noch viel mehr als Audio- und Video-Streaming: Ein WebRTC-gestütztes Smart Home-Sicherheitssystem kann beispielsweise Live-Videos produzieren und anhand der Daten eines vernetzten Schlosses erkennen, welche Tür offen ist.
Dmitry Zhadinets ist Embedded-Software-Entwickler bei Softeq. Mit einem Doktortitel in Sprachanalyse und -synthese und über zehn Jahren Erfahrung in der Entwicklung von Embedded Systems ist Dmitry Zhadinets an mehreren CCTV-Projekten für Unternehmen beteiligt und interessiert sich besonders für Technologien zur Übertragung von Mediendateien. Er ist seit 2002 in der IT-Branche tätig.