Skip to content

Instantly share code, notes, and snippets.

@SleepingSoul
Last active March 9, 2024 21:41
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save SleepingSoul/6590a1425da0c2358848fda4e51863f0 to your computer and use it in GitHub Desktop.
Save SleepingSoul/6590a1425da0c2358848fda4e51863f0 to your computer and use it in GitHub Desktop.
Building GStreamer from source on Linux device

Hardware used: Orange Pi 4 LTS

OS: Armbian Jammy

Should work everywhere on Debian or Ubuntu

Step 1: Install build tools (meson, ninja)

Usually gstreamer uses newer version of meson then available in apt packages, so we need to also build and install it from source. This is super easy. Here I am using 1.2.3 version that is currently latest, but you can use any other version.

sudo apt install pip
wget https://github.com/mesonbuild/meson/releases/download/1.2.3/meson-1.2.3.tar.gz
tar -xf meson-1.2.3.tar.gz
rm meson-1.2.3.tar.gz
cd meson-1.2.3
python3 setup.py build
sudo python3 setup.py install
cd ..
sudo rm -rf meson-1.2.3/
sudo apt install ninja-build

Step 2: Hack to install all runtime dependencies

There is no proper runtime dependencies documentation for gstreamer. However, we can install pre-build gstreamer packages from apt and then remove them without removing dependencies. I copied the following line from the official site: https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
sudo apt-get remove libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
sudo apt remove gir1.2-gst-plugins-bad-1.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 libgstreamer-gl1.0-0 libgstreamer-opencv1.0-0 libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer1.0-0

Make sure that there is no old gstreamer on your device left! Use aptitude search gstreamer and check that there is no installed packages.

Step 3: Building!

I am using 1.22.6 version which is currently latest, but you can use another one.

git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git
cd gstreamer/
git checkout 1.22.6
mkdir build
meson setup --buildtype release build
cd build
ninja -j 6
sudo ninja install

Then you can use gst-inspect-1.0 to verify that your plugins are installed and that the correct version is being used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment