After a year and a half of development the release of the new version of GStreamer 1.20 was announced, a cross-platform set of components written in C for building a wide range of multimedia applications, from media players and audio/video file converters, to VoIP applications and streaming systems.
In this new version, the inclusion of new encoders stands out, as well as improvements in support for mixing audio and video, among other things.
Main new features of GStreamer 1.20
In this new version it is mentioned that development on top of GitLab has moved to using a single common repository to all modules.
As for the novelties that are presented in this new version, it should be noted that added a new high-level library, GstPlay, which replaces the GstPlayer API and provides similar functionality for playing content, except that it uses a message bus to notify applications instead of GObject signals.
It is also noted that added support for SMPTE 2022-1 2-D mechanism (forward error correction), plus encodebin and transcodebin for VP8, VP9, and H.265 codecs implement smart encoding mode (“smart encoding”), in which transcoding is performed only when needed, and the rest of the time, the existing transmission is forwarded.
Another notable change is that added the ability to decode input data at the intermediate frame level (sub-frame), which allows you to start decoding without waiting for a full frame. This optimization is compatible with OpenJPEG JPEG 2000, FFmpeg H.264, and OpenMAX H.264/H.265 decoders.
In addition to video decoding for RTP, WebRTC, and RTSP protocols, it provides automatic handling of packet loss, data corruption, and keyframe requests, as well. added support for changing codec data on the fly to container packers media mp4 and Matroska.
On the other hand, it is noted that added support for decoding information of transparency in WebM format, allowing you to play VP8/VP9 videos with transparent areas, as well as support for setting additional application-specific properties in encoding profiles, and the ability to use CUDA for color space conversion, element scaling, and scaling. element loading.
Of the Other changes that stand out of this new version:
- The payloader and payloader classes have unified support for working with additional RTP headers.
- Improved compatibility with WebRTC.
- Added mode to create fragmented mp4 media bins.
- Added event support to the AppSink API in addition to buffers and buffer lists.
- Added additional settings for internal queues to AppSrc.
- Updated Rust language bindings and added 26 new plugins written in Rust (gst-plugins-rs).
- Added aesdec and aesenc elements for encryption and decryption using the AES algorithm.
Added fakeaudiosink and videocodectestsink elements for testing and debugging.
- Improved tools to create minimalist versions of GStreamer.
Added the ability to compile with FFmpeg 5.0.
- For Linux, stateless versions of the MPEG-2 and VP9 codecs are implemented.
- For Windows, the Direct3D11/DXVA based decoder has added support for AV1 and MPEG-2.
- Souphttpsrc plugin compatible with libsoup2 and libsoup3.
- Composer supports video conversion and mixing in multi-threaded mode.
Finally if you want to know more about it about this new version of Gstreamer you can check the changelog In the following link.
How to install Gstreamer 1.20 on Ubuntu and derivatives?
If you are interested in installing Gstreamer 1.18 on your distro You can do it by following the steps that we share below.
The process is valid both for the new version of Ubuntu 20.04 as well as for previous versions with support.
To perform the installation, we just have to open a terminal (Ctrl+Alt+T) and in it we type the following commands:
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
And that’s it, you will have already installed Gstreamer 1.16 on your system.