Hardware used: Orange Pi 4 LTS
OS: Armbian Jammy
Should work everywhere on Debian or Ubuntu
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
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.
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.