| Filename | Latest commit message | Latest commit date |
|---|---|---|
| linux | ||
| osx | ||
| windows | ||
| .gitattributes | ||
| README.md | ||
| release.txt | ||
FFmpeg binaries
This repository contains pre-compiled FFmpeg binaries sourced from Tyrrrz/FFmpegBin. It is intended to be consumed by other repositories as a Git submodule rather than built from source here.
Platform layout
Executables are organized by operating system and architecture:
linux/{arm64,x64,x86}/
osx/{arm64,x64}/
windows/{arm64,x64,x86}/
Each architecture directory contains the ffmpeg, ffplay, and ffprobe executables available for that platform.
Windows executables have the .exe extension. osx is the directory name for macOS.
Git LFS setup
Binary files are stored with Git LFS. Install Git and Git LFS before cloning or adding this repository, then enable LFS for your user account:
git lfs install
If a binary is a small text file beginning with version https://git-lfs.github.com/spec/v1, its LFS content has not been downloaded. From the consuming repository root, download the binaries for the checked-out submodule commit:
git -C path/to/ffmpeg-bin lfs pull
For a standalone clone, run git lfs pull inside this repository instead. CI environments also need Git LFS installed and the binary content downloaded before running FFmpeg.
Versions and upstream source
release.txt records the bundled release version
Add as a tagged Git submodule
Run these commands in the project that will use the binaries (the parent repository). Replace path/to/ffmpeg-bin with your desired submodule directory. Replace <version> with a tag listed by git tag --list; do not type the angle brackets literally.
git submodule add https://git.zephyrbash.dev/zephnx/ffmpeg-bins.git path/to/ffmpeg-bin
git -C path/to/ffmpeg-bin fetch --tags
git -C path/to/ffmpeg-bin tag --list
git -C path/to/ffmpeg-bin checkout --detach tags/<version>
git -C path/to/ffmpeg-bin lfs pull
git add .gitmodules path/to/ffmpeg-bin
git commit -m "Add FFmpeg binaries <version>"
If no suitable tag exists, replace tags/<version> with the desired commit ID and use that ID in the commit message. A detached HEAD is expected when pinning a submodule to a tag or commit.
Initialize an existing submodule
The parent repository records the commit for the selected tag, so collaborators can initialize the same binary version with:
git clone --recurse-submodules <parent-repository-url>
For an existing checkout:
git submodule update --init --recursive
After either cloning or initializing, ensure the binaries are downloaded:
git -C path/to/ffmpeg-bin lfs pull
Update the pinned version
To update the submodule to a later tagged release, run the following from the parent repository root to select the new tag and commit the updated submodule pointer:
git -C path/to/ffmpeg-bin fetch --tags
git -C path/to/ffmpeg-bin checkout --detach tags/<version>
git -C path/to/ffmpeg-bin lfs pull
git add path/to/ffmpeg-bin
git commit -m "Update FFmpeg binaries to <version>"
Provenance, integrity, and licensing
For licensing information, the pre-built binaries from the upstream project are licensed under the MIT license, but you should consult FFmpeg's licensing information
Update script and issues
The script that updates this repo automatically can be found on GitHub
If there's any issues with this, go to the GitHub repo for this