Skip to content

Instantly share code, notes, and snippets.

@deadflowers
Created May 18, 2026 23:04
Show Gist options
  • Select an option

  • Save deadflowers/e1bc998128e2a71be3b851d334efe236 to your computer and use it in GitHub Desktop.

Select an option

Save deadflowers/e1bc998128e2a71be3b851d334efe236 to your computer and use it in GitHub Desktop.
My FFmpeg Installer
#!/usr/bin/env bash
set -e
WORKSPACE="/home/ray/installs/ffmpeg_sources"
echo "Re-creating fresh build workspace at ${WORKSPACE}..."
rm -rf "${WORKSPACE}"
mkdir -p "${WORKSPACE}"
cd "${WORKSPACE}"
echo "Installing airtight dependency matrix..."
sudo apt update
sudo apt install -y cmake git build-essential pkg-config yasm nasm \
libx264-dev libx265-dev libnuma-dev libvpl-dev liblilv-dev \
libsdl2-dev libfreetype-dev libfontconfig-dev libfribidi-dev \
libsvtav1enc-dev libjxl-dev libfdk-aac-dev libcaca-dev \
libdav1d-dev libaom-dev libmysofa-dev libass-dev libgnutls28-dev \
libmp3lame-dev libopus-dev libsoxr-dev libvorbis-dev libvpx-dev \
libwebp-dev libzimg-dev libplacebo-dev
echo "Fetching Fraunhofer VVenC source tree..."
git clone --depth 1 --branch v1.12.1 https://github.com/fraunhoferhhi/vvenc.git
cd vvenc
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install
sudo ldconfig
cd "${WORKSPACE}"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
echo "Cloning upstream FFmpeg codebase..."
git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
echo "Configuring FFmpeg compilation matrix..."
./configure \
--prefix=/usr/local \
--arch=amd64 \
--toolchain=hardened \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-stripping \
--enable-gnutls \
--enable-libaom \
--enable-libass \
--enable-libcaca \
--enable-libdav1d \
--enable-libfdk-aac \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libfribidi \
--enable-libjxl \
--enable-libmp3lame \
--enable-libmysofa \
--enable-libopus \
--enable-libsoxr \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libzimg \
--enable-libvpl \
--enable-lv2 \
--enable-sdl2 \
--enable-libplacebo \
--enable-libsvtav1 \
--enable-shared \
--enable-libvvenc
echo "Compiling system binaries..."
make -j$(nproc)
echo "Installing targets..."
sudo make install
sudo ldconfig
echo "Deployment complete. Cleaning workspace..."
cd /home/ray/installs
rm -rf "${WORKSPACE}"
hash -r
echo "Verification:"
/usr/local/bin/ffmpeg -hide_banner -buildconf | grep -E "vvc|jxl|fdk|caca|svtav1"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment