Setting a GStreamer Alternative Environment
Overview
This guide describes the steps necessary to setup an alternative GStreamer environment on your machine. There are several reasons you might want to do this:
- Building and using the newest version
- Having multiple versions alongside
- Installing in a non-standard location
- Avoiding conflicts with system's default one
Install GStreamer below version 1.16
Dependencies
You'll need the following dependencies:
sudo apt-get install \ pkg-config bison flex git \ libglib2.0-dev liborc-0.4-dev \ libtool autopoint autoconf \ gettext yasm
Additionally, install the packages in Optional Dependencies if you wish to enable the construction of plug-ins with external dependencies.
Building the Environment
For this example, I'm going to build the latest available version. At this point its 1.16, from a Git perspective "master" will always point to the latest.
#Download and grant execution permissions wget https://raw.githubusercontent.com/GStreamer/gstreamer/1.16/scripts/create-uninstalled-setup.sh chmod ug+rx create-uninstalled-setup.sh #Execute the script. #By default, the script downloads the environment to ~/gst #By default, the script downloads the master branch ./create-uninstalled-setup.sh #Switch to the new environment cd ~/gst/ ./gst-master #Build the environment for module in `echo gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav`; do cd $module ./autogen.sh --disable-gtk-doc --disable-tests --disable-nls && make -j8 cd - done #Leave the environment exit cd ~/gst/
Using the Environment
You'll find each version you downloaded as a set of scripts and directories. To switch to the environment run the following:
cd ~/gst #Select your version, this example uses master ./gst-master #Use the new gstreamer! gst-launch-1.0 --gst-version #When finished, exit the session to return to normality exit
In this special environment, all the paths are configured to point to the appropriate plugins.
Customizing the environment
Changing the version
Modify the BRANCH variable in the create-uninstalled-setup.sh to the desired version. For example:
- BRANCH=master
- BRANCH=1.8
- BRANCH=1.4
New version don't require a new area, since they are stored in different directories within the original area
Changing the location of the build
Modify the UNINSTALLED_ROOT variable in the create-uninstalled-setup.sh. After creating the area, you'll also need to modify the MYGST variable in the gst-master script (or whatever version you've downloaded)
Path considerations when using JetPack and Jetson platforms
If the environment doesn't recognize your new GStreamer version, it could be for the way that JetPack handles the $PATH and $LD_LIBRARY_PATH libraries. You can solve this issue by modifying the end of the ~/.bashrc file inside your Jetson platform as follows:
export PATH=$PATH:/usr/local/cuda-9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64:
Optional Dependencies
The following dependencies are optional, and if installed will enable the construction of the associated plug-ins. For example, if libx264-dev is installed, x264enc will be built.
# For gst-plugins-base
sudo apt install libasound2-dev libcdparanoia-dev libvorbisidec-dev libvisual-0.4-dev libopus-dev libpango1.0-dev libxv-dev
# For gst-plugins-good
sudo apt install libavc1394-dev libaa1-dev libcaca-dev libcairo2-dev libdv4-dev libflac-dev libgdk-pixbuf2.0-dev libjack-dev libjpeg9-dev libpng-dev libpulse-dev libshout3-dev libsoup2.4-dev libspeex-dev libtaglib-cil-dev libwavpack-dev libx11-dev