Essentially it's a tool, tinderbox, that automates the process of checking out and building a recent FFmpeg source code, including nonfree libraries such as libfdk-aac and decklink.
For a manual build, follow detailed instructions below:
Requirements
Ensure you have the following tools installed on your system:
- Bash
- Docker
Targets, Variants and Addins
win64
: Build for 64-bit Windowswin32
: Build for 32-bit Windows
gpl
: Builds all libraries fromscripts.d
folder exceptlibfdk-aac
anddecklink
lgpl
: Excludes additional libraries (avisynth
,davs2
,vidstab
,x264
,x265
andxavs2
)nonfree
: Includes both non-free libraries (libfdk-aac
anddecklink
) and all libraries of the gpl variant
debug
: Adds debug symbols to the build. It'sgdb
compatible embedded debug info
- Build base-image:
docker build -t ghcr.io/nanake/base-${TARGET}:latest images/base-${TARGET}
Note: You might need to modify the rootfs image by specifying a public image base, such as fedora:rawhide
.
- Build target-variant image:
./generate.sh ${TARGET} ${VARIANT}
docker build -t ghcr.io/nanake/${TARGET}-${VARIANT}:latest .
Alternatively, You can build both base-image and target-variant image by simply invoke makeimage.sh
. For example:
./makeimage.sh win64 nonfree
- Build FFmpeg
./build.sh ${TARGET} ${VARIANT} ${ADDINS}
To create a shared
build of FFmpeg, append -shared
to the VARIANT
name. For example:
./build.sh win64 gpl-shared
Upon successful build completion, the build artifacts will be available in the artifacts
folder.
- iconv
- libxml2
- zlib
- libfreetype
- libfribidi
- gmp
- lzma
- libharfbuzz
- libfontconfig
- libvorbis
- opencl
- libvmaf
- amf
- avisynth
- chromaprint
- cuda-llvm
- decklink
- ffnvcodec
- libaribcaption
- libass
- libbluray
- libdav1d
- libdavs2
- libdvdnav
- libdvdread
- libfdk-aac
- libgme
- libjxl
- libkvazaar
- liblc3
- libmp3lame
- libopencore-amrnb
- libopencore-amrwb
- libopenh264
- libopenjpeg
- libopenmpt
- libopus
- libplacebo
- librav1e
- librist
- librubberband
- libshaderc
- libsnappy
- libsoxr
- libsrt
- libssh
- libsvtav1
- libtheora
- libtwolame
- libuavs3d
- libvidstab
- libvpl
- libvpx
- libvvenc
- libwebp
- libx264
- libx265
- libxavs2
- libxevd
- libxeve
- libzimg
- libzmq
- libzvbi
- openal
- schannel
- sdl2
- vaapi
- vulkan
The foundation for this build script comes from the work of BtbN.