Skip to content

Instantly share code, notes, and snippets.

@kuasha
Forked from ykazakov/gstreamer-build-nox.sh
Created January 29, 2021 23:44
Show Gist options
  • Save kuasha/8fe194b9794b39f3b9e1d29e2d12ebe0 to your computer and use it in GitHub Desktop.
Save kuasha/8fe194b9794b39f3b9e1d29e2d12ebe0 to your computer and use it in GitHub Desktop.
#!/bin/bash
export MAKEFLAGS="-j 3"
set -e
VERSION="1.18.0"
LIBNICE_VERSION="0.1.17" # libnice (v>=0.1.14) needed for webrtcbin
LIBSRTP_VERSION="2.3.0" # libsrtp (v>=2.2.0) required for srtp plugin
WEBRTCAUDIO_VERSION="0.3.1" # webrtc-audio-processing required for webrtcdsp
USRSCTP_VERSION="0.9.3.0" # usrsctp required for webrtc data channels (sctp)
[ -n "$1" ] && VERSION=$1
# Create a log file of the build as well as displaying the build on the tty as it runs
exec > >(tee build_gstreamer.log)
exec 2>&1
# Update and Upgrade the Pi, otherwise the build may fail due to inconsistencies
grep -q BCM2 /proc/cpuinfo && sudo apt-get update && sudo apt-get upgrade -y
# Remove old versions of dependencies; these will be build
# use dpkg since apt-get remove fail if the package is not installed
sudo dpkg --remove libnice-dev libsrtp2-dev libusrsctp-dev
sudo apt autoremove -y
# Get the required libraries without X server
sudo apt-get install -y build-essential autotools-dev automake autoconf checkinstall \
libtool autopoint libxml2-dev zlib1g-dev libglib2.0-dev \
pkg-config bison flex python3 wget tar gtk-doc-tools libasound2-dev \
libgudev-1.0-dev libvorbis-dev libcdparanoia-dev \
libtheora-dev libvisual-0.4-dev iso-codes \
libraw1394-dev libiec61883-dev libavc1394-dev \
libv4l-dev libcaca-dev libspeex-dev libpng-dev \
libshout3-dev libjpeg-dev libflac-dev libdv4-dev \
libtag1-dev libwavpack-dev libsoup2.4-dev libbz2-dev \
libcdaudio-dev libdc1394-22-dev ladspa-sdk libass-dev \
libcurl4-gnutls-dev libdca-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 \
librtmp-dev libsndfile1-dev libsoundtouch-dev libspandsp-dev \
libxvidcore-dev libvpx-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 \
freeglut3 weston wayland-protocols pulseaudio libpulse-dev libssl-dev
# gstreamer
PACKAGE=gstreamer
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# gst-plugins-base
PACKAGE=gst-plugins-base
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
# include the renamed egl and glesv2 libraries
LIBDIR=$(pwd)/lib
mkdir -p $LIBDIR/pkconfig
ln -fs /opt/vc/lib/libbrcmEGL.so $LIBDIR/libEGL.so
ln -fs /opt/vc/lib/libbrcmGLESv2.so $LIBDIR/libGLESv2.so
ln -fs /opt/vc/lib/pkgconfig/brcmegl.pc $LIBDIR/pkconfig/egl.pc
ln -fs /opt/vc/lib/pkgconfig/brcmglesv2.pc $LIBDIR/pkconfig/glesv2.pc
./configure \
PKG_CONFIG_PATH="/opt/vc/lib/pkgconfig:$LIBDIR/pkconfig" \
LDFLAGS="-L/opt/vc/lib -L$LIBDIR -lbrcmEGL -lbrcmGLESv2" \
CFLAGS='-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux/' \
CPPFLAGS='-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux/' \
--prefix=/usr \
--disable-gtk-doc --disable-examples \
--with-gles2-module-name=libbrcmGLESv2 \
--with-egl-module-name=libbrcmEGL \
--disable-fatal-warnings
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# gst-plugins-good
PACKAGE=gst-plugins-good
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# gst-plugins-ugly
PACKAGE=gst-plugins-ugly
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# gst-libav
PACKAGE=gst-libav
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# libnice
PACKAGE=libnice
wget https://nice.freedesktop.org/releases/$PACKAGE-$LIBNICE_VERSION.tar.gz
tar xvf $PACKAGE-$LIBNICE_VERSION.tar.gz
cd $PACKAGE-$LIBNICE_VERSION
./configure --prefix=/usr --enable-compile-warnings=minimum
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# libsrtp
PACKAGE=libsrtp
wget https://github.com/cisco/$PACKAGE/archive/v$LIBSRTP_VERSION.tar.gz -O $PACKAGE-$LIBSRTP_VERSION.tar.gz
tar xzf $PACKAGE-$LIBSRTP_VERSION.tar.gz
cd $PACKAGE-$LIBSRTP_VERSION
./configure --prefix=/usr
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# webrtc audio processing
PACKAGE=webrtc-audio-processing
wget http://freedesktop.org/software/pulseaudio/$PACKAGE/$PACKAGE-$WEBRTCAUDIO_VERSION.tar.xz
tar xvf $PACKAGE-$WEBRTCAUDIO_VERSION.tar.xz
cd $PACKAGE-$WEBRTCAUDIO_VERSION
./configure --prefix=/usr
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# usrsctp
PACKAGE=usrsctp
wget https://github.com/sctplab/$PACKAGE/archive/$USRSCTP_VERSION.tar.gz -O $PACKAGE-$USRSCTP_VERSION.tar.gz
tar xzf $PACKAGE-$USRSCTP_VERSION.tar.gz
cd $PACKAGE-$USRSCTP_VERSION
./bootstrap
./configure --prefix /usr/ \
CPPFLAGS='-Wno-address-of-packed-member'
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# gst-plugins-bad
PACKAGE=gst-plugins-bad
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# python bindings
PACKAGE=gst-python
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
PYTHON=/usr/bin/python3 ./configure --prefix=/usr
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# omx support
PACKAGE=gst-omx
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure \
PKG_CONFIG_PATH="/opt/vc/lib/pkgconfig" \
LDFLAGS='-L/opt/vc/lib' \
CFLAGS='-I/opt/vc/include -I/opt/vc/include/IL -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/IL' \
CPPFLAGS='-I/opt/vc/include -I/opt/vc/include/IL -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/IL' \
--prefix=/usr --disable-gtk-doc --with-omx-target=rpi --disable-examples --disable-fatal-warnings
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
# Gstreamer RTSP Server
PACKAGE=gst-rtsp-server
wget https://gstreamer.freedesktop.org/src/$PACKAGE/$PACKAGE-$VERSION.tar.xz
tar xvf $PACKAGE-$VERSION.tar.xz
cd $PACKAGE-$VERSION
./configure --prefix=/usr --disable-gtk-doc
make
echo $PACKAGE > description-pak
sudo checkinstall -y --fstrans=no
sudo ldconfig
cd ..
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment