-
-
Save Rohlik/1b9dd7c96651190dada3524360bece28 to your computer and use it in GitHub Desktop.
Compiling ffmpeg for Raspberry Pi 4 (script only works fine on RPi OS 32bit). x64 does not support mmal (see https://github.com/raspberrypi/userland/issues/688)
This file contains 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 | |
# Note that there's no libdrm because this lib cause errors | |
sudo apt update -y && sudo apt upgrade -y | |
sudo pip3 install meson ninja | |
sudo apt-get -y install \ | |
autoconf \ | |
automake \ | |
build-essential \ | |
cmake \ | |
doxygen \ | |
git \ | |
graphviz \ | |
imagemagick \ | |
libomxil-bellagio-dev \ | |
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 \ | |
nasm \ | |
pkg-config \ | |
python3-dev \ | |
python3-pip \ | |
texinfo \ | |
wget \ | |
yasm \ | |
libsrt-gnutls-dev \ | |
zlib1g-dev | |
mkdir ~/ffmpeg-libraries | |
#AAC | |
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git ~/ffmpeg-libraries/fdk-aac \ | |
&& cd ~/ffmpeg-libraries/fdk-aac \ | |
&& autoreconf -fiv \ | |
&& ./configure \ | |
&& make -j3 -l8 \ | |
&& sudo make install | |
#AV1 | |
git clone --depth 1 https://code.videolan.org/videolan/dav1d.git ~/ffmpeg-libraries/dav1d \ | |
&& mkdir ~/ffmpeg-libraries/dav1d/build \ | |
&& cd ~/ffmpeg-libraries/dav1d/build \ | |
&& meson .. \ | |
&& ninja \ | |
&& sudo ninja install | |
#HEVC | |
git clone --depth 1 https://github.com/ultravideo/kvazaar.git ~/ffmpeg-libraries/kvazaar \ | |
&& cd ~/ffmpeg-libraries/kvazaar \ | |
&& ./autogen.sh \ | |
&& ./configure \ | |
&& make -j3 -l7 \ | |
&& sudo make install | |
#VP8 and VP9 | |
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx ~/ffmpeg-libraries/libvpx \ | |
&& cd ~/ffmpeg-libraries/libvpx \ | |
&& ./configure --disable-examples --disable-tools --disable-unit_tests --disable-docs \ | |
&& make -j2 \ | |
&& sudo make install | |
#AP1 | |
git clone --depth 1 https://aomedia.googlesource.com/aom ~/ffmpeg-libraries/aom \ | |
&& mkdir ~/ffmpeg-libraries/aom/aom_build \ | |
&& cd ~/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 -j3 -l8 \ | |
&& sudo make install | |
#zimg | |
git clone --recursive https://github.com/sekrit-twc/zimg.git ~/ffmpeg-libraries/zimg \ | |
&& cd ~/ffmpeg-libraries/zimg \ | |
&& sh autogen.sh \ | |
&& ./configure \ | |
&& make \ | |
&& sudo make install | |
sudo ldconfig | |
git clone --depth 1 https://github.com/FFmpeg/FFmpeg.git ~/FFmpeg \ | |
&& cd ~/FFmpeg \ | |
&& ./configure \ | |
--extra-cflags="-I/usr/local/include" \ | |
--extra-ldflags="-L/usr/local/lib" \ | |
--extra-libs="-lpthread -lm -latomic" \ | |
--arch=armhf \ | |
--enable-gmp \ | |
--enable-gpl \ | |
--enable-libass \ | |
--enable-libdav1d \ | |
--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 -j3 -l8 \ | |
&& sudo make install |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment