Last active
June 21, 2020 16:58
-
-
Save shivasiddharth/0b55ae00024b8fbf1f2ffd8f42a1f928 to your computer and use it in GitHub Desktop.
Script to compile FFMPEG on Raspberry Pi for OMX acceleration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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