Nach einem Jahr Entwicklung wurde GStreamer 1.26 veröffentlicht, ein plattformübergreifendes Komponenten-Set zur Erstellung einer Vielzahl von Multimedia-Anwendungen, von Media-Playern und Audio-/Video-Konvertern bis hin zu VoIP-Anwendungen und Streaming-Systemen. Der Code von GStreamer steht unter der LGPLv2.1-Lizenz. Separat werden Updates für die Plugins gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly sowie die Wrapper gst-libav und den Streaming-Server gst-rtsp-server entwickelt. Auf der API- und ABI-Ebene ist die neue Version abwärtskompatibel mit der 1.0-Serie. Binärversionen werden in Kürze für Android, iOS, macOS und Windows bereitgestellt (unter Linux wird die Verwendung der Pakete aus der Distribution empfohlen).
Wichtige Verbesserungen in GStreamer 1.26:
- Die Codierung und Decodierung des VVC-Formats (Versatile Video Coding), auch bekannt als der Video-Komprimierungsstandard H.266, wurde hinzugefügt. Dieser Standard wurde von Arbeitsgruppen der MPEG (ISO/IEC JTC 1) und VCEG (ITU-T) in Zusammenarbeit mit Unternehmen wie Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm und Sony entwickelt. H.266 löst H.265 (HEVC) ab und bietet eine hohe Effizienz bei der Übertragung und Speicherung aller Bildschirmauflösungen (von SD und HD bis 4K und 8K). Zudem unterstützt es Video mit erweitertem dynamischen Bereich (HDR, High Dynamic Range) und 360-Grad-Panorama-Videos.
- Der LCEVC-Standard (Low Complexity Enhancement Video Coding) für die Codierung von Videos wurde hinzugefügt, der eine zusätzliche Schicht mit Metadaten implementiert, um die Qualität bestehender Codecs H.26x und MP4/ISOBMFF zu verbessern.
- Ein Kodierer und Dekodierer für das JPEG XS-Bildformat wurde hinzugefügt, das als leichtgewichtiges Bildcodierungssystem positioniert ist und minimale Latenzen bei Codierung und Decodierung bietet. Es ist auf die Optimierung der Übertragung von sehr hochwertigen Bildfolgen (bis zu 8K) ausgerichtet. JPEG XS ermöglicht eine erhebliche Reduzierung der erforderlichen Bandbreite der Kommunikationskanäle, ohne dass für das menschliche Auge wahrnehmbare Qualitätsverluste auftreten.
- Die Möglichkeit zur Substitution und Extraktion versteckter Untertitel für die Formate H.264 und H.265 wurde hinzugefügt.
- Die Unterstützung für adaptives Streaming basierend auf den Protokollen HLS (HTTP Live Streaming) und DASH (Dynamic Adaptive Streaming over HTTP) wurde verbessert. Neue Multimedia-Datenempfänger (sink) hlscmafsink und hlssink3 für die Ausgabe von CMAF (fMP4) und MPEG-TS-Segmenten sowie hlsmultivariantsink für variable Ausgaben wurden hinzugefügt.
- Der Verpacker und Entpacker für MPEG-TS-Multimedia-Container hat die Unterstützung für die Codecs H.266, JPEG XS, AV1 und VP9 sowie für die Metadaten SMPTE ST-2038 und ID3 erhalten.
- Für die Formate Matroska und ISO MP4 wurden Verpacker und Entpacker für den Codec H.266/VVC hinzugefügt. In MP4 wurden Entpacker für Videos in den Formaten Hap und Lagarith integriert.
- Unterstützung für SMPTE 2038 hinzugefügt, ein System zum Anheften zusätzlicher Daten und Metadaten an Multimedia-Container.
- Integration mit der Grafikschnittstelle Vulkan verbessert. Erweiterte Möglichkeiten zur Speicherverwaltung, Auswahl des Farbraums, Gerätemanagement und Vollbildmodus. Unterstützung von Vulkan-Erweiterungen für die Beschleunigung der Dekodierung von H264- und H265-Videos hinzugefügt. Die Leistung des Encoders, der Vulkan verwendet, wurde gesteigert.
- Integration mit OpenGL verbessert. Unterstützung zusätzlicher Farbkonvertierungsformate und Pixelformate hinzugefügt. Unterstützung für den Import von Streams mit DMABufs eingeführt.
- Integration mit der Qt6-Bibliothek und QML verbessert.
- Komponenten zur Integration mit CUDA und NVIDIA Video Codec SDK erweitert. Ein AV1-Encoder basierend auf der NVCODEC-API hinzugefügt.
- Die gst-d3d12-Bibliothek mit Encodern und Decodern basierend auf der Direct3D 12-API implementiert.
- Unterstützung für MIKEY-Schlüsselverwaltung auf Client-Seite im RTSP-Stack hinzugefügt.
- In audioconvert wurde Unterstützung für die Neugruppierung von Audiospuren hinzugefügt.
- Im Plugin, das auf der GTK3-Bibliothek basiert, wurde Unterstützung für OpenGL/WGL auf der Windows-Plattform hinzugefügt.
- Im Element imagefreeze wurde die Unterstützung für die Formate JPEG und PNG hinzugefügt.
- Im Element pitch wurde die Möglichkeit zur Rückwärtswiedergabe implementiert.
- Im Element rtmp2 wurden die Authentifizierungsmechanismen auf RTP-Servern verbessert. Die Unterstützung für die Authentifizierung im CDN Limelight wurde hinzugefügt.
- Im Plugin für die Integration mit VA-API wurden Elemente zur Beschleunigung der Dekodierung von H.266 (VVC) sowie zur Kodierung von VP8 und JPEG hinzugefügt.
- Es wurden Elemente zur Arbeit mit Streams auf der Grundlage des QUIC-Protokolls hinzugefügt (roh QUIC, RTP-over-QUIC und WebTransport).
- Im Paket gst-plugins-rs wurden 23 neue Elemente oder Plugins, die in Rust geschrieben sind, hinzugefügt. In Rust geschriebene Plugins können in Programmen aller Sprachen verwendet werden, und die Arbeit mit ihnen ähnelt der Verwendung von Plugins in C und C++.
Quelle: opennet.ru
