AWEL Multimedia Packages for RHEL/CentOS 7

GStreamer

Network Security starts with DNS. Deploy DNSSEC now.

AWEL GStreamer Packages for RHEL/CentOS 7

Table of Contents

About GStreamer

From the GStreamer Website:

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.

Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.

CentOS 7.4 ships with two versions of GSstreamer, versions 0.10.36 and 1.10.4.

The 0.10.x branch is really only there to maintain compatibility with applications that have not been updated to the 1.x branch of GStreamer.

This repository currently packages GStreamer 1.12.4, which is a drop-in replacement for the 1.10.4 packages. The 1.10.4 packages will be erased. The 0.10.36 packages will be left alone.

About These Packages

CentOS ships with GStreamer, so why these packages?

There is a saying that has been going around for awhile, “RHEL/CentOS on the server, Fedora on the desktop.”

The basic notion of course being that as a desktop end user, you should accept whimsical decisions and unstable software that is bleeding edge opposed to actually being stable and usable without pulling your teeth out. I do not understand the logic of it.

I reject that notion. I want a desktop operating system that is actually stable, and one that will not be “end of life” several times before the hardware dies, requiring multiple installs of newer versions.

Fedora on the Desktop is not for me, I demand the stability on my desktop a distribution like CentOS gives me. I demand a distribution that will likely still be receiving updates when my hardware dies.

Unfortunately the version of GStreamer that ships with CentOS is rather old. When CentOS 7 shipped, it was not even capable of decoding the VP9 video used in WebM2.

Conscientious web developers would make their videos available in WebM2 as well as H.264/AVC so that users of operating systems without H.264/AVC support could watch them, and I still could not watch them because the GStreamer in CentOS 7 was just barely too ancient. It could play WebM that used VP8 but the quality of VP8 is noticeably inferior to H.264/AVC at all but the highest bitrates.

Anyway, I already had a lot of media libraries from my need for a fully capable FFmpeg so I decided to build a more modern GStreamer for CentOS 7, including support for far more codecs than CentOS ships, and it has been an incredible benefit to my CentOS 7 desktop experience. I now have a very stable Linux desktop with modern multimedia capabilities.

Installing GStreamer 1.12.4

Make sure that you have installed the AWEL Media repo package as described on the Home Page. Make sure your system is up to date:

[root@host ~]# yum clean all && yum update      
      

If you already had the GStreamer 1.10.4 packages installed, the above process will have replaced them. If you did not already have them installed, simply run:

[root@host ~]# yum install gstreamer1 gstreamer1-plugins-good gstreamer1-plugins-bad
      

That should result in a fairly decent base set of plugins. You will however probably want to install some additional plugins.

Core Plugins

The core set of GStreamer plugins are categorized into four categories:

Base Plugins
Well maintained base plugins that every GStreamer install should probably have
Good Plugins
These are plugins where the libraries the plugins link against are LGPL and the quality of the library code is considered to be very good.
Bad Pugins
These are plugins where the libraries the plugins link against are LGPL but the quality of the library code may not be at the same level as in the Good plugins.
Ugly Plugins
These are plugins where the libraries the plugins link against are not LGPL. They are open source, but you might not be allowed to include the plugins with other products due to potential license conflicts. The quality of the library code is usually very good, Ugly only refers to potential license issues for those embedding GStreamer in another application.

Base Plugins

All of the base plugins are in a single package. This package is required by GStreamer 1.12.4 itself, you have them if you installed GStreamer 1.12.4.

Good Plugins

Most of these plugins are in a single package. A few plugins that are not normally needed were split out into separate packages.

To see all the available packages: GStreamer Good Plugins.

Bad Plugins

Many of these plugins are in a single package, but quite a few have been split out into sub-packages.

Of particular interest to most users is probably the AAC plugins package, which allows decoding and encoding AAC audio. The DTS package is also probably of interest to many.

To see all the available packages: GStreamer Bad Plugins.

Ugly Plugins

Some of these plugins are in a single package, but many have been split out into sub-packages. This is the package needed for MP3 support.

The A52 package is also probably of interest to many users.

To see all the available packages: GStreamer Ugly Plugins.

Other GStreamer Packages

In addition to the above plugins, some additional packages are available for GStreamer 1.12.4.

GStreamer Python

This package contains the Python bindings needed to create GStreamer applications in Python. To install it:

[root@host ~]# yum install gstreamer1-python
        

GStreamer VAAPI

This plugin provides hardware accelerated encoding and decoding when the hardware supports it. To install it:

[root@host ~]# yum install gstreamer1-vaapi
        

GStreamer RTSP Server

This is a library that sits on top of GStreamer for building RTSP server applications. It is not needed by most desktop users. To install it:

[root@host ~]# yum install gstreamer1-rtsp-server
        

GStreamer LibAV

This package provides a wrapper to the FFmpeg LibAV library. It can be installed with the following command:

[root@host ~]# yum install gstreamer1-libav
        

Fluendo Commercial Packages

Fluendo makes some commercial GStreamer products for Linux. The OnePlay codec pack provides high quality plugins that work well with the GStreamer packages here, and allow decoding of many patent encumbered codecs including Windows Media Player and H.264/AVC. The OnePlay codec pack is a good product. I have not tried their DVD Player of their OnePlay Player.

The OnePlay codec pack can be purchased from https://fluendo.com/en/oneplay/.

This is not a paid endorsement. I have been using their codec pack for years. It works very well, the quality of the decoding is superior to what the free plugins packaged here offer, and the RPM they provide has plugins for both the 0.10.x and the 1.x versions of GStreamer, so all your GStreamer based applications benefit regardless of which version of GStreamer they are built against.