Nach einem Jahr Entwicklung wurde GStreamer 1.22 veröffentlicht, ein plattformübergreifendes Set von Komponenten zur Erstellung einer breiten Palette von Multimedia-Anwendungen, von Mediaplayern und Audio-/Video-Converter bis hin zu VoIP-Anwendungen und Streaming-Systemen. Der GStreamer-Code wird unter der LGPLv2.1-Lizenz verbreitet. Updates für die Plugins gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly sowie das Wrapper-Plugin gst-libav und der Streaming-Server gst-rtsp-server werden separat entwickelt. Auf API- und ABI-Ebene ist die neue Version abwärtskompatibel mit der 1.0-Version. Binaries werden in Kürze für Android, iOS, macOS und Windows bereitgestellt (unter Linux wird empfohlen, die Pakete aus der Distribution zu verwenden).
Schlüsselverbesserungen von GStreamer 1.22:
- Die Unterstützung für das AV1-Videokodierungsformat wurde verbessert. Die Möglichkeit zur Nutzung der Hardwarebeschleunigung für die Kodierung und Decodierung von AV1 über die APIs VAAPI/VA, AMF, D3D11, NVCODEC, QSV und Intel MediaSDK wurde hinzugefügt. Neue RTP-Handler für AV1 wurden hinzugefügt. Die Analyse von AV1 in den Containern MP4, Matroska und WebM wurde verbessert. Die Builds umfassen Elemente mit AV1-Kodierern und -Dekodierern, die auf den Bibliotheken dav1d und rav1e basieren.
- Die Unterstützung für Qt6 wurde implementiert. Ein Element qml6glsink wurde hinzugefügt, das Qt6 zur Wiedergabe von Videos in einer QML-Szene nutzt.
- Elemente wie gtk4paintablesink und gtkwaylandsink wurden hinzugefügt, um die Darstellung mit GTK4 und Wayland zu ermöglichen.
- Neue Clients für adaptives Streaming, die die Protokolle HLS, DASH und MSS (Microsoft Smooth Streaming) unterstützen, wurden hinzugefügt.
- Die Möglichkeit zur Erstellung von minimierten Builds, die zur Reduzierung der Größe optimiert sind, wurde bereitgestellt.
- Unterstützung für WebRTC Simulcast und Google Congestion Control wurde hinzugefügt.
- Ein einfacher und autonomer Plugin zur Übertragung über WebRTC wurde bereitgestellt.
- Ein neuer MP4-Mediendatencontainer-Wrapper mit Unterstützung für fragmentierte und nicht fragmentierte Daten wurde hinzugefügt.
- Neue Plugins für den Amazon AWS-Speicher und Audio-Transkriptionsdienste wurden hinzugefügt.
- Die Bindungen für die Programmiersprache Rust wurden aktualisiert. Es wurden 19 neue Plugins, Effekte und Elemente in Rust (gst-plugins-rs) hinzugefügt. Es wird bemerkt, dass 33 % der Änderungen im neuen GStreamer in Rust umgesetzt wurden (Änderungen betreffen Bindungen und Plugins), und das Plugin-Set gst-plugins-rs ist eines der am aktivsten entwickelten Module von GStreamer. Plugins, die in Rust geschrieben sind, können in Programmen aller Sprachen verwendet werden, und die Arbeit mit ihnen ähnelt der Verwendung von Plugins in C und C++.
- Die Lieferung von Plugins für Rust ist im Rahmen der offiziellen Binärpakete für die Plattformen Windows und macOS sichergestellt (Kompilierung und Lieferung werden für Linux, Windows und macOS unterstützt).
- Ein in Rust geschriebener Media-Server auf Basis von WebRTC wurde implementiert, der WHIP (WebRTC HTTP ingest) und WHEP (WebRTC HTTP egress) unterstützt.
- Das Element videocolorscale wurde hinzugefügt, das Funktionen zur Konvertierung und Skalierung von Video kombiniert.
- Die Unterstützung für Videos mit großer Farbtiefe wurde verbessert.
- In der API Navigation wurde die Unterstützung für Ereignisse von Touchscreens hinzugefügt.
- Elemente zur Korrektur von Zeitstempeln für H.264/H.265 wurden hinzugefügt, um die Rekonstruktion von PTS/DTS vor der Verpackung von Mediendateien zu ermöglichen.
- Auf der Plattform Linux wurde die Verwendung von DMA zur Zusammenarbeit mit Buffern beim Kodieren, Dekodieren, Filtern und Rendern von Videos mit Hardwarebeschleunigung verbessert.
- Die Integration mit CUDA wurde verbessert: die Bibliothek gst-cuda und das Element cudaconvertscale wurden hinzugefügt, und die Integration mit den D3D11-Elementen und NVIDIA dGPU NVMM wurde sichergestellt.
- Die Integration mit Direct3D11 wurde verbessert: die neue Bibliothek gst-d3d11 wurde hinzugefügt, und die Möglichkeiten der Plugins d3d11screencapture, d3d11videosink, d3d11convert und d3d11compositor wurden erweitert.
- Für AMD-GPUs wurden neue hardwarebeschleunigte Videoencoder für die Formate H.264 / AVC, H.265 / HEVC und AV1 implementiert, die mit dem SDK AMF (Advanced Media Framework) erstellt wurden.
- Im Plugin applemedia wurde die Unterstützung für das Kodieren und Dekodieren von H.265 / HEVC-Videos hinzugefügt.
- Im Plugin androidmedia wurde die Unterstützung für das Kodieren von H.265 / HEVC-Videos hinzugefügt.
- In die Plugins audiomixer, compositor, glvideomixer und d3d11compositor wurde die Eigenschaft force-live zur erzwungenen Aktivierung des Live-Modus hinzugefügt.
Quelle: opennet.ru
