Skip to content

Instantly share code, notes, and snippets.

@yuyou
Forked from damiandixon/build-gstreamer.sh
Last active April 6, 2020 11:44
Show Gist options
  • Save yuyou/e4a37da845c3437476fcfc899ade6f64 to your computer and use it in GitHub Desktop.
Save yuyou/e4a37da845c3437476fcfc899ade6f64 to your computer and use it in GitHub Desktop.
Build gstreamer from source with Qt plugin and Nvidia NVENC support
#!/bin/bash
# Set your target branch
BRANCH="1.16.2"
exec > >(tee build-gstreamer.log)
exec 2>&1
sudo apt-get install -y build-essential autotools-dev automake autoconf \
libtool autopoint libxml2-dev zlib1g-dev libglib2.0-dev \
pkg-config bison flex python3 git gtk-doc-tools libasound2-dev \
libgudev-1.0-dev libxt-dev libvorbis-dev libcdparanoia-dev \
libpango1.0-dev libtheora-dev libvisual-0.4-dev iso-codes \
libgtk-3-dev libraw1394-dev libiec61883-dev libavc1394-dev \
libv4l-dev libcairo2-dev libcaca-dev libspeex-dev libpng-dev \
libshout3-dev libjpeg-dev libaa1-dev libflac-dev libdv4-dev \
libtag1-dev libwavpack-dev libpulse-dev libsoup2.4-dev libbz2-dev \
libcdaudio-dev libdc1394-22-dev ladspa-sdk libass-dev \
libcurl4-gnutls-dev libdca-dev libdirac-dev libdvdnav-dev \
libexempi-dev libexif-dev libfaad-dev libgme-dev libgsm1-dev \
libiptcdata0-dev libkate-dev libmimic-dev libmms-dev \
libmodplug-dev libmpcdec-dev libofa0-dev libopus-dev \
librsvg2-dev librtmp-dev libschroedinger-dev libslv2-dev \
libsndfile1-dev libsoundtouch-dev libspandsp-dev libx11-dev \
libxvidcore-dev libzbar-dev libzvbi-dev liba52-0.7.4-dev \
libcdio-dev libdvdread-dev libmad0-dev libmp3lame-dev \
libmpeg2-4-dev libopencore-amrnb-dev libopencore-amrwb-dev \
libsidplay1-dev libtwolame-dev libx264-dev libusb-1.0 \
python-gi-dev yasm python3-dev libgirepository1.0-dev
[ ! -d orc ] && git clone git://anongit.freedesktop.org/git/gstreamer/orc
[ ! -d gstreamer ] && git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer
[ ! -d gst-plugins-base ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-base
[ ! -d gst-plugins-good ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-good
[ ! -d gst-plugins-bad ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-bad
[ ! -d gst-libav ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-libav
[ ! -d gstreamer-vaapi ] && git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer-vaapi
[ ! -d gst-plugins-ugly ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-ugly
[ ! -d gst-python ] && git clone git://anongit.freedesktop.org/git/gstreamer/gst-python
export LD_LIBRARY_PATH=/usr/local/lib/
cd orc
./autogen.sh --disable-gtk-doc
make
sudo make install
cd ..
cd gstreamer
git checkout $BRANCH
./autogen.sh --disable-gtk-doc
make
sudo make install
cd ..
cd gst-plugins-base
git checkout $BRANCH
./autogen.sh --disable-gtk-doc
make
sudo make install
cd ..
cd gst-libav
git checkout $BRANCH
./autogen.sh --disable-gtk-doc --enable-orc
make
sudo make install
cd ..
cd gstreamer-vaapi
git checkout $BRANCH
./autogen.sh --disable-gtk-doc --enable-qt
make
sudo make install
cd ..
cd gst-plugins-good
git checkout $BRANCH
QT_LOC=/opt/Qt/5.11.1/gcc_64
PATH=$QT_LOC/bin:$PATH
LD_LIBRARY_PATH=$QT_LOC/lib:$LD_LIBRARY_PATH
PKG_CONFIG_PATH=$QT_LOC/lib/pkgconfig:$PKG_CONFIG_PATH
./autogen.sh --disable-gtk-doc --enable-qt
make
# pushd ext/qt
# $QT_BIN_LOC/qmake
# make
# popd
sudo make install
cd ..
cd gst-
plugins-bad
git checkout $BRANCH
./autogen.sh --disable-gtk-doc --enable-orc
make
sudo make install
cd ..
cd gst-plugins-ugly
git checkout $BRANCH
./autogen.sh --disable-gtk-doc --enable-orc
make
sudo make install
cd ..
# export PYTHON=/usr/bin/python3 (Specify required python version)
#cd gst-python
#git checkout $BRANCH
#./autogen.sh --disable-gtk-doc --noconfigure
# with-libpython-dir -> location of libpython*.so
#./configure --with-libpython-dir="/usr/lib/x86_64-linux-gnu"
#make
#sudo make install
#cd ..
sudo ldconfig
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment