GStreamer

Neuimplementierung des Low-Level-Netzwerkprotokolls eines Multimedia-Frameworks für mehr Sicherheit, bessere Wartbarkeit und Nachhaltigkeit

Eckdaten

Status:
Laufend
Investition
203.000,00 €
Investitionsjahr(e)
2023, 2024

GStreamer ist ein umfassendes Framework für die Multimediaverarbeitung, das in verschiedenen Betriebssystemen, Media-Playern, eingebetteten Geräten, Server-Produkten und Browser-Engines weit verbreitet ist. Diese Technologie ist von entscheidender Bedeutung für den Echtzeittransport von Audio- und Videodaten in verschiedenen Anwendungen.

Dieses GStreamer Projekt stellt kritische Komponenten des GStreamer Multimedia-Frameworks von der Programmiersprache C auf Rust um, um die Sicherheit, Wartbarkeit und Nachhaltigkeit zu verbessern. Dieses Low-Level-Protokoll bildet die Grundlage für die weit verbreiteten Standards Real-Time Streaming Protocol (RTSP) und WebRTC (Web Real-Time Communication). Die Implementierungen dieser Protokolle bilden Kernkomponenten des GStreamer-Frameworks.

RTP ist für die tatsächliche Übertragung der Audio- und Videodaten zuständig. Sein Begleitprotokoll, das Real-Time Control Protocol (RTCP), sorgt für die Kontrolle und Rückmeldung über die Qualität der Datenübertragung. RTCP ist eine entscheidende Komponente in Echtzeit-Kommunikationssystemen, die zur reibungslosen und synchronisierten Bereitstellung von Multimedia-Inhalten beiträgt und gleichzeitig Mechanismen für die Beteiligten zur Erfassung und Anpassung an die Netzwerkbedingungen bereitstellt.

Die aktuellen GStreamer-Implementierungen von RTP/RTCP, RTSP und WebRTC sowie die meisten anderen Komponenten von GStreamer sind in der Programmiersprache C geschrieben und haben daher mit bekannten Problemen zu kämpfen. Dies hat zu einem Strom von wiederkehrenden Sicherheitsproblemen geführt, deren Behebung Zeit und Aufmerksamkeit der Maintainer*innen erfordert. Um diese Situation nachhaltiger zu gestalten und mehr Mitwirkende zu motivieren, hat die GStreamer Community bereits damit begonnen, spezielle Module und Komponenten in Rust zu implementieren, einer speichersicheren Alternative zu C.

Obwohl es wichtig ist, grundlegende Teile des Frameworks in einer speichersicheren Sprache neu zu implementieren, sind diese Komponenten komplex, und das Projekt war bisher nicht in der Lage, private Interessengruppen und Partner*innen zu finden, die diese Arbeit unterstützen.


Warum ist das wichtig?

GStreamer ist nahezu präsent und nahtlos eingebettet in Fernsehgeräte, intelligente Lautsprecher, Videotürklingeln, CCTV-Kameras, IoT-Geräte, Telefone, Uhren, Server, Blu-ray-Player, Drohnen, Bohrausrüstung und Desktop-/Mobilanwendungen. Von Aufzügen, Autos, Schiffen, Zügen und Flugzeugen bis hin zur Internationalen Raumstation wird GStreamer in Unterhaltungs- und Sicherheitsanwendungen und sogar in medizinischen Geräten wie chirurgischen Mikroskopen für komplizierte Operationen eingesetzt.

Die Stabilität der GStreamer-API, der Funktionsumfang und das erweiterbare Design haben dazu geführt, dass GStreamer zu einem grundlegenden Bestandteil anderer Frameworks wie NVIDIA Deepstream, Intel OpenVINO/DLStreamer, Amazon Kinesis, Qt, OpenCV und vielen anderen geworden ist. Die Unterstützung für Hardware-beschleunigte Videos hat GStreamer als Standard in Embedded Linux etabliert.

GStreamer hat auch eine größere Bedeutung im breiteren Kontext der Medien-Frameworks. In der heutigen Internet- und World-Wide-Web-Landschaft spielen Medien-Frameworks eine entscheidende Rolle. Einige Video- und Audiostandards befinden sich jedoch nach wie vor unter der Kontrolle von Privatunternehmen. Die Investition in das GStreamer-Projekt verbessert die langfristige Sicherheit und Wartbarkeit eines offenen Frameworks für den Audio- und Videotransport. Ein freies und quelloffenes Streaming-Framework (im Gegensatz zu privat kontrollierten) bewahrt die Freiheit der Wahl bei Kommunikations- und Medienübertragungslösungen.


Was unterstützen wir?

Der STF hat Centricular mit der Verbesserung des GStreamer-Multimedia-Frameworks beauftragt, indem kritische Komponenten in Rust implementiert werden, um die Sicherheit, Wartbarkeit und Nachhaltigkeit zu verbessern. Dazu gehören RTCP-Parsing, RTP-Sessionverwaltung, Echtzeit-Kommunikationsverbesserungen und umfassende Unterstützung für Audio- und Videoformate, um die Flexibilität und Kompatibilität von GStreamer für eine breite Palette von Anwendungen zu gewährleisten

  1. Grundlegende GStreamer-Komponenten in Rust neu schreiben
    • Real-Time Control Protocol (RTCP) Parsing und Real-Time Transport Protocol (RTP) Sitzungsverwaltung.
    • Unterstützung von RTP/AVPF-Profilen.
  2. Echtzeit-Kommunikationsverbesserungen
    • GStreamer RTP Jitterbuffer und Synchronisation in Rust.
  3. Umfassende Audio- und Video-Unterstützung
    • RTP Payloader und Depayloader in Rust für gängige Audio- und Videoformate.
    • RTP-Unterstützung für H.264, H.265, VP8, VP9 und Container/Meta-Formate.
  4. Neuschreiben des Real-Time Streaming Protocol (RTSP) in Rust
    • GStreamer RTSP-Protokoll-Client-Element in Rust, mit Schwerpunkt auf die wichtigsten Funktionen, Live-Wiedergabe und RTSP 1.0-Unterstützung

More technologies

Alle Technologien