Nach anderthalb Jahren Entwicklung wurde GStreamer 1.20 veröffentlicht. Es handelt sich um ein plattformübergreifendes Set von Komponenten, das in C geschrieben ist und eine Vielzahl von Multimedia-Anwendungen ermöglicht, von Mediaplayern und Audio-/Video-Konvertern bis hin zu VoIP-Anwendungen und Streaming-Systemen. Der GStreamer-Code wird unter der LGPLv2.1-Lizenz verbreitet. Gleichzeitig sind Updates für die Plugins gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20 sowie das Binding gst-libav 1.20 und der Streaming-Server gst-rtsp-server 20 verfügbar. Auf API- und ABI-Ebene ist die neue Version abwärtskompatibel mit der 1.0-Serie. Binärpakete werden bald für Android, iOS, macOS und Windows zur Verfügung stehen (unter Linux wird die Verwendung der Pakete aus der Distribution empfohlen).
Wesentliche Verbesserungen in GStreamer 1.20:
- Die Entwicklung auf GitLab wurde auf die Nutzung eines einheitlichen Repositories umgestellt, das für alle Module gilt.
- Eine neue hochgradig abstrahierte Bibliothek GstPlay wurde hinzugefügt, die die GstPlayer-API ersetzt und ähnliche Funktionen zur Inhaltswiedergabe bietet, sich jedoch durch die Verwendung von Nachrichtenbussen zur Benachrichtigung von Anwendungen anstelle von GObject-Signalen unterscheidet.
- Die Unterstützung für die Dekodierung von Transparenzinformationen im WebM-Format wurde hinzugefügt, die die Wiedergabe von VP8/VP9-Videos mit transparenten Bereichen ermöglicht.
- Im Kodierungsprofil wurde die Unterstützung für die Anpassung zusätzlicher, anwendungsspezifischer Eigenschaften hinzugefügt.
- Im Compositor wurde die Unterstützung für die Transformation und das Mischen von Videos im Mehrprozessbetrieb implementiert.
- In den Klassen depayloader und payloader wurde die Unterstützung für die Arbeit mit zusätzlichen RTP-Headern (RTP Header Extensions) vereinheitlicht.
- Die Unterstützung für den Mechanismus zur vorzeitigen Fehlerkorrektur SMPTE 2022-1 2-D (Forward Error Correction) wurde hinzugefügt.
- In encodebin und transcodebin für die Codecs VP8, VP9 und H.265 wurde ein intelligenter Kodierungsmodus ('smart encoding') implementiert, bei dem die Rekodierung nur bei Bedarf erfolgt, während in der übrigen Zeit der vorhandene Stream durchgeschleift wird.
- Die Kompatibilität des Plugins souphttpsrc mit libsoup2 und libsoup3 wurde sichergestellt.
- Die Möglichkeit zum Dekodieren von Eingabedaten auf der Ebene von Zwischenbildern (sub-frame) wurde hinzugefügt, was es ermöglicht, das Dekodieren zu beginnen, ohne auf den Erhalt eines vollständigen Bildes zu warten. Diese Optimierung wird in den Decodern OpenJPEG JPEG 2000, FFmpeg H.264 und OpenMAX H.264/H.265 genutzt.
- Beim Dekodieren von Videos für die Protokolle RTP, WebRTC und RTSP wird eine automatische Handhabung von Paketverlust, Datenbeschädigung und Anfragen für Schlüsselbilder gewährleistet.
- Die Container-Wrapper für mp4 und Matroska unterstützen jetzt das On-the-Fly-Ändern von Codec-Daten, was ermöglicht, Profil, Ebene und Auflösung für eingehende H.264/H.265-Streams zu ändern.
- Ein Modus zur Erstellung von fragmentierten mp4-Mediacontainern wurde hinzugefügt.
- Der WPE-Port (WebKit-Port für eingebettete Systeme) unterstützt jetzt Audio.
- Die Nutzung von CUDA zur Farbkonvertierung, Skalierung von Elementen und zum Laden von Elementen wurde hinzugefügt.
- Für die OpenGL-Elemente glupload und gldownload wurde die Unterstützung für NVMM (NVIDIA Memory Module) hinzugefügt.
- Die Unterstützung für WebRTC wurde verbessert.
- Ein neues Plugin für die VA-API (Video Acceleration API) wurde vorgeschlagen, das mehr Decoder und Post-Processing-Elemente unterstützt.
- Die API AppSink unterstützt nun Events zusätzlich zu Puffern und Pufferlisten.
- Zusätzliche Einstellungen für interne Warteschlangen wurden zu AppSrc hinzugefügt.
- Die Bindungen in Rust wurden aktualisiert und 26 neue Plugins, die in Rust geschrieben sind (gst-plugins-rs), wurden hinzugefügt.
- Die Elemente aesdec und aesenc wurden hinzugefügt, um die Verschlüsselung und Entschlüsselung mit dem AES-Algorithmus zu ermöglichen.
- Die Elemente fakeaudiosink und videocodectestsink wurden zur Testung und Fehlersuche hinzugefügt.
- Die Tools zur Erstellung minimalistische GStreamer-Bauten wurden verbessert.
- Die Möglichkeit zur Compilation mit FFmpeg 5.0 wurde hinzugefügt.
- Für Linux wurden die zustandslosen (Stateless) MPEG-2- und VP9-Codecs implementiert.
- Unter Windows unterstützt der Decoder, der auf Direct3D11/DXVA basiert, jetzt AV1 und MPEG-2.
Quelle: opennet.ru
