#!/bin/bash export MAKEFLAGS="-j 3" set -e VERSION="1.15.90" LIBNICE_VERSION="0.1.15" # libnice (v>=0.1.14) needed for webrtcbin LIBSRTP_VERSION="2.2.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 sudo apt-get remove -y 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 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/ 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 --disable-examples 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 \ 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 ..