finds.dev

markus-perl/ffmpeg-build-script

The FFmpeg build script provides an easy way to build a static FFmpeg on OSX and Linux with non-free codecs included.

View on GitHub

★ 1,222ShellMITupdated Sep 2026

// the take

A bash script that compiles a static FFmpeg binary from source on macOS and Linux, pulling in GPL/non-free codecs like x264, x265, and fdk-aac that the official builds and most package managers won't ship. It's for anyone who needs a self-contained ffmpeg/ffprobe binary with hardware acceleration (CUDA, VAAPI, Vulkan) and doesn't want to hand-roll the dependency chain themselves.

It handles the actual hard part of a from-source FFmpeg build: ordering and compiling ~20 interdependent libraries (dav1d, SVT-AV1, x265, libass plus its own fribidi/harfbuzz/fontconfig chain, etc.) with correct flags, and lets you drop any of them with --disable while it tells you up front what else that breaks. CUDA builds detect your actual GPU's compute capability via nvidia-smi instead of shipping a lowest-common-denominator target, which matters because a mismatched architecture silently runs CPU-only. The TLS backend footgun (GnuTLS built but never wired into FFmpeg's configure, so LGPL Linux builds couldn't open https:// at all) is fixed and documented, and the Docker paths mean you're not require to install a cuda toolkit on the host just to get a CUDA-capable binary.

Nothing downloaded is checksum-verified — not the FFmpeg release, not a single one of the ~20 dependency tarballs — so the whole build trusts the integrity of every upstream mirror and TLS connection on every run; for a script people pipe straight into bash from curl, that's a real supply-chain gap. The static-linking approach is explicitly against glibc's own guidance because of NSS, meaning anything the binary does involving name resolution (certain protocols, DNS-based inputs) can misbehave in ways that are hard to debug and the README just shrugs and links to the glibc FAQ. Official support is Debian and macOS only; Fedora/RHEL/Arch/Alpine instructions exist but aren't part of CI, so a break on those platforms can sit unfixed for a while (the maintainer says so directly: don't file issues for them). A CUDA or whisper.cpp binary is tied to the hardware/architecture it was built on — compute capability, or the one whisper backend you picked at build time — so compiling on a beefy build box and deploying the binary elsewhere is its own trap if you don't know to set CUDA_COMPUTE_CAPABILITY.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
1,222
Forks
368
Language
Shell
License
MIT
Last commit
21 Sep 2026

// nearby

If ffmpeg-build-script isn't quite it.

All repos →