Skip to content

Instantly share code, notes, and snippets.

@shivasiddharth
Last active June 21, 2020 16:58
Show Gist options
  • Save shivasiddharth/0b55ae00024b8fbf1f2ffd8f42a1f928 to your computer and use it in GitHub Desktop.
Save shivasiddharth/0b55ae00024b8fbf1f2ffd8f42a1f928 to your computer and use it in GitHub Desktop.
Script to compile FFMPEG on Raspberry Pi for OMX acceleration
#!/bin/bash
echo "Compiling FFMPEG.........."
echo ""
sudo apt-get -y install autoconf automake build-essential cmake doxygen git graphviz imagemagick libasound2-dev libass-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libfreetype6-dev libgmp-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libopus-dev librtmp-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsnappy-dev libsoxr-dev libssh-dev libssl-dev libtool libv4l-dev libva-dev libvdpau-dev libvo-amrwbenc-dev libvorbis-dev libwebp-dev libx264-dev libx265-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb1-dev libxml2-dev lzma-dev meson nasm pkg-config python3-dev python3-pip texinfo wget yasm zlib1g-dev libgmp3-dev libgmp-dev libdrm-dev
cd /home/pi/
if [ ! -d ffmpeg/ffmpeg-libraries ]
then
mkdir -p ~/ffmpeg/ffmpeg-libraries
fi
if [ ! -d ffmpeg/ffmpeg-libraries/fdk-aac ]
then
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git ~/ffmpeg/ffmpeg-libraries/fdk-aac
fi
cd ~/ffmpeg/ffmpeg-libraries/fdk-aac \
&& autoreconf -fiv \
&& ./configure \
&& make -j$(nproc) \
&& sudo make install
if [ ! -d ffmpeg/ffmpeg-libraries/dav1d ]
then
git clone --depth 1 https://code.videolan.org/videolan/dav1d.git ~/ffmpeg/ffmpeg-libraries/dav1d
mkdir ~/ffmpeg/ffmpeg-libraries/dav1d/build
fi
cd ~/ffmpeg/ffmpeg-libraries/dav1d/build \
&& meson .. \
&& ninja \
&& sudo ninja install
if [ ! -d ffmpeg/ffmpeg-libraries/kvazaar ]
then
git clone --depth 1 https://github.com/ultravideo/kvazaar.git ~/ffmpeg/ffmpeg-libraries/kvazaar
fi
cd ~/ffmpeg/ffmpeg-libraries/kvazaar \
&& ./autogen.sh \
&& ./configure \
&& make -j$(nproc) \
&& sudo make install
if [ ! -d ffmpeg/ffmpeg-libraries/libvpx ]
then
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx ~/ffmpeg/ffmpeg-libraries/libvpx
fi
cd ~/ffmpeg/ffmpeg-libraries/libvpx \
&& ./configure --disable-examples --disable-tools --disable-unit_tests --disable-docs \
&& make -j$(nproc) \
&& sudo make install
if [ ! -d ffmpeg/ffmpeg-libraries/aom ]
then
git clone --depth 1 https://aomedia.googlesource.com/aom ~/ffmpeg/ffmpeg-libraries/aom
mkdir ~/ffmpeg/ffmpeg-libraries/aom/aom_build
fi
cd ~/ffmpeg/ffmpeg-libraries/aom/aom_build \
&& cmake -G "Unix Makefiles" AOM_SRC -DENABLE_NASM=on -DPYTHON_EXECUTABLE="$(which python3)" -DCMAKE_C_FLAGS="-mfpu=vfp -mfloat-abi=hard" .. \
&& sed -i 's/ENABLE_NEON:BOOL=ON/ENABLE_NEON:BOOL=OFF/' CMakeCache.txt \
&& make -j$(nproc) \
&& sudo make install
if [ ! -d ffmpeg/ffmpeg-libraries/zimg ]
then
git clone https://github.com/sekrit-twc/zimg.git ~/ffmpeg/ffmpeg-libraries/zimg
fi
cd ~/ffmpeg/ffmpeg-libraries/zimg \
&& sh autogen.sh \
&& ./configure \
&& make \
&& sudo make install \
&& sudo make install
sudo ldconfig
if [ ! -d ffmpeg/ffmpeg-libraries/FFmpeg ]
then
wget -P ~/ffmpeg/ffmpeg-libraries/ https://github.com/FFmpeg/FFmpeg/archive/n4.3.tar.gz
tar -xf ~/ffmpeg/ffmpeg-libraries/n4.3.tar.gz -C ~/ffmpeg/ffmpeg-libraries/
mv ~/ffmpeg/ffmpeg-libraries/FFmpeg-n4.3/ ~/ffmpeg/ffmpeg-libraries/FFmpeg/
sudo rm /home/pi/ffmpeg/ffmpeg-libraries/n4.3.tar.gz
fi
cd ~/ffmpeg/ffmpeg-libraries/FFmpeg \
&& ./configure \
--extra-cflags="-I/usr/local/include" \
--extra-ldflags="-L/usr/local/lib" \
--extra-libs="-lpthread -lm" \
--arch=armel \
--enable-gmp \
--enable-gpl \
--enable-libaom \
--enable-libass \
--enable-libdav1d \
--enable-libdrm \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libkvazaar \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopus \
--enable-librtmp \
--enable-libsnappy \
--enable-libsoxr \
--enable-libssh \
--enable-libvorbis \
--enable-libvpx \
--enable-libzimg \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libxml2 \
--enable-mmal \
--enable-nonfree \
--enable-omx \
--enable-omx-rpi \
--enable-version3 \
--target-os=linux \
--enable-pthreads \
--enable-openssl \
--enable-hardcoded-tables \
&& make -j$(nproc) \
&& sudo make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment