Last active
January 4, 2024 06:38
-
-
Save shr00mie/7ca72e80de1e20e2b59c6c911631d967 to your computer and use it in GitHub Desktop.
FFMPEG - Build from Source - Ubuntu 22.04 - Non-CUDA
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 | |
PROCS=$(($nproc/2)) | |
sudo apt-get update -qq && sudo apt-get -y install \ | |
autoconf \ | |
automake \ | |
build-essential \ | |
cmake \ | |
git-core \ | |
libass-dev \ | |
libfreetype6-dev \ | |
libgnutls28-dev \ | |
libmp3lame-dev \ | |
libsdl2-dev \ | |
libtool \ | |
libva-dev \ | |
libvdpau-dev \ | |
libvorbis-dev \ | |
libxcb1-dev \ | |
libxcb-shm0-dev \ | |
libxcb-xfixes0-dev \ | |
meson \ | |
ninja-build \ | |
pkg-config \ | |
texinfo \ | |
wget \ | |
yasm \ | |
zlib1g-dev | |
# create build directories | |
mkdir -p ~/ffmpeg_sources ~/bin | |
# download additional code libraries | |
sudo apt-get install nasm \ | |
libx264-dev \ | |
libx265-dev \ | |
libnuma-dev \ | |
libvpx-dev \ | |
libfdk-aac-dev \ | |
libopus-dev \ | |
libdav1d-dev -y | |
# build AV1 from source | |
cd ~/ffmpeg_sources && \ | |
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \ | |
mkdir -p aom_build && \ | |
cd aom_build && \ | |
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_TESTS=OFF -DENABLE_NASM=on ../aom && \ | |
PATH="$HOME/bin:$PATH" make -j$PROCS && \ | |
make install | |
cd ~/ffmpeg_sources && \ | |
git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git && \ | |
mkdir -p SVT-AV1/build && \ | |
cd SVT-AV1/build && \ | |
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \ | |
PATH="$HOME/bin:$PATH" make -j$PROCS && \ | |
make install | |
# AV1 decoder | |
cd ~/ffmpeg_sources && \ | |
wget https://github.com/Netflix/vmaf/archive/v2.3.1.tar.gz && \ | |
tar xvf v2.3.1.tar.gz && \ | |
mkdir -p vmaf-2.3.1/libvmaf/build &&\ | |
cd vmaf-2.3.1/libvmaf/build && \ | |
meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static .. --prefix "$HOME/ffmpeg_build" --bindir="$HOME/ffmpeg_build/bin" --libdir="$HOME/ffmpeg_build/lib" && \ | |
ninja && \ | |
ninja install | |
# copy vmaf binary to build specific directory | |
cp $HOME/ffmpeg_build/bin/* $HOME/bin | |
# download latest snapshot source, compile, and install to system | |
cd ~/ffmpeg_sources && \ | |
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \ | |
tar xjvf ffmpeg-snapshot.tar.bz2 && \ | |
cd ffmpeg && \ | |
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ | |
--pkg-config-flags="--static" \ | |
--extra-cflags="-I$HOME/ffmpeg_build/include" \ | |
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \ | |
--extra-libs="-lpthread -lm" \ | |
--ld="g++" \ | |
--enable-gpl \ | |
--enable-gnutls \ | |
--enable-libaom \ | |
--enable-libass \ | |
--enable-libfdk-aac \ | |
--enable-libfreetype \ | |
--enable-libmp3lame \ | |
--enable-libopus \ | |
--enable-libsvtav1 \ | |
--enable-libdav1d \ | |
--enable-libvorbis \ | |
--enable-libvpx \ | |
--enable-libx264 \ | |
--enable-libx265 \ | |
--enable-nonfree \ | |
--enable-libvmaf && \ | |
PATH="$HOME/bin:$PATH" make -j$PROCS && \ | |
sudo make install | |
# cleanup of generated build directories | |
sudo rm -rf ~/ffmpeg_* ~/bin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment