← ConcordanceHow-tos

NOTICETools listed with owners and licences so credits stay easy. Free to use as a reference; credit what you ship.

Concordance · how-tos · tools & licences

Shipping media stacks cleanly

A practical FFmpeg-adjacent toolbox: encoders, decoders, muxers, filters and bindings worth embedding, with the owner, the licence, and the one-line credit that keeps your build clean.

Sharing something you made? Three things
  1. Know what's inside. List every library and file you didn't write yourself.
  2. Keep their notices. Their copyright and licence lines travel with their code, even when yours is closed.
  3. Say what your own licence is. And let it match what's actually inside.

Why this list

Most media apps are assembled, not written from scratch: an encoder here, a muxer there, a wrapper on top. This is the shelf of good parts we keep coming back to, with links so you can plug them in fast, and the minimum notice each one asks for, so what you ship matches what's inside.

MIT is the default for a lot of app-friendly packages, so there's an MIT filter below. Even MIT asks for a copyright line in your notices, and some MIT wrappers bundle code under other licences, so the notice column still matters.

Licences were read from each project's LICENSE/COPYING on its default branch in October 2026. A practitioner's map, not legal advice.

The toolbox

Category
Licence family
Licence
Last column
Tools by licence family

ToolRoleOwnerRepoLicenceMinimum notice / ship tip

FFmpeg's own licence, on one screen

BuildResulting licenceWhat it means for you
Default configureLGPL-2.1+Linking from closed code works if you link dynamically (or ship relinkable objects), include the LGPL text, and point to the source.
--enable-version3LGPL-3.0+Needed for Apache-2.0 or LGPL-3 libs (e.g. mbedTLS, OpenCORE, libaribb24). Same obligations, v3 flavour, including the install/replace rules.
--enable-gplGPL-2.0+Needed for x264, x265, libxvid, frei0r, rubberband, avisynth, and the GPL filters (hqdn3d, delogo, eq…). Everything linked must be GPL-compatible.
--enable-gpl --enable-version3GPL-3.0+e.g. for smbclient. GPL-3 terms apply to the whole binary.
--enable-nonfreeNot redistributablefdk-aac, DeckLink, cuda-nvcc / CUDA SDK. Fine on your own machine, but don't ship it.

Check what you actually shipped: ffmpeg -L prints the licence of that build, and ffmpeg -buildconf prints the configure flags. Paste both into your notices. FFmpeg's own checklist lives at ffmpeg.org/legal.html.

Codec patents (H.264, HEVC, AAC, VVC) are separate from copyright licences. The source licence doesn't settle them, so look into it before you ship commercially.

How to credit, by licence

LicenceMinimum you shipPlain-language note
MIT / Old MITCopyright line + permission noticePaste it into your notices file or About screen. That's it.
ISCCopyright line + permission noticeMIT's shorter cousin. Same handling.
BSD-2-ClauseCopyright + 2 conditions + disclaimerBinaries must reproduce it in docs or another shipped file.
BSD-3-ClauseSame as BSD-2Plus: don't use their name to endorse your product.
BSD-3-Clause-ClearSame as BSD-3Explicitly grants no patent rights. Check for a separate PATENTS file.
BSD-2-Clause-PatentSame as BSD-2Includes an express patent grant. Nice.
zlib / libpngKeep the notice in sourceDon't misrepresent origin; mark altered versions. Binary credit is appreciated but optional.
IJG (libjpeg)Credit line in docsBinary-only? Say it's "based in part on the work of the Independent JPEG Group".
Apache-2.0Licence text + their NOTICE file (if they have one)Mark files you modified. Comes with a patent grant. Not compatible with GPL-2 or LGPL-2.1 (fine with v3).
MPL-2.0Licence notice; source of modified MPL filesFile-level copyleft: your own files stay yours.
LGPL-2.1 / 3.0Licence text + source (or written offer) + relinkabilityDynamic linking is the easy route. v3 adds install/replace rules on locked devices.
GPL-2.0 / 3.0Licence text + complete corresponding source for the whole linked workIf it's linked in, your program ships under GPL terms. A separate CLI process is usually treated as a separate program.
Unlicense / CC0 / public domainNothing requiredCredit is still kind and makes provenance clear.
WTFPLNothing requiredSome legal teams won't approve it. A credit line still helps.
Dual (GPL or commercial)Pick one path, on purposex264, x265, Bento4, libimagequant, Rubber Band: GPL for open apps, a paid licence for closed ones.

A notices file that travels with the code

  1. Inventory what's actually linked or bundledUse ffmpeg -buildconf for native builds, npx license-checker (old but still works) or pip-licenses for packages, and cargo about for Rust. reuse lint checks your own repo.
  2. Collect full texts into one fileTHIRD_PARTY_NOTICES (or NOTICE) at the repo root, one block per component: name, version, URL, licence text.
  3. Make it visible in the productAn "Open-source licences" screen, an About dialog, or --licenses on a CLI. Ship the file next to binaries and inside installers.
  4. Match the top-level LICENSE to realityIf a GPL component is linked in, a lone MIT LICENSE at the root no longer tells the whole story. Say what applies to what.
  5. Copyleft extrasFor LGPL/GPL parts, add a source link or written offer for the exact version and build flags you shipped.

Two ways to ship

Fully open stack

Top-level licence
GPL-3.0 or GPL-2.0+ works with almost everything here
Unlocks
x264, x265, Rubber Band, libimagequant, frei0r, GPL FFmpeg filters
Notices
One file with every licence text + a source link
Avoid
fdk-aac (non-free); Apache-2.0 libs with GPL-2-only code

Proprietary layer on top

Top-level licence
Yours, plus a clear third-party notices file
Stick to
Permissive libs + LGPL FFmpeg linked dynamically, or spawn the ffmpeg CLI as a separate process
Swap in
OpenH264 or HW encoders (NVENC/QSV/VA-API/AMF) for x264; SVT-AV1/rav1e; Kvazaar for HEVC
Or
Buy the commercial licence (x264, x265, Bento4, libimagequant, Rubber Band)

Gotchas worth knowing

Linking
GPL spreads through linking; LGPL doesn'tLinking libx264 makes the whole linked program a GPL work. LGPL only asks that users can swap the library and get its source.
Static
Static LGPL is harder, not forbiddenStatic linking means also providing the library's source and your object files (or another way to relink). Dynamic linking is the low-effort path, and FFmpeg's own checklist recommends it.
Binaries
Redistributing ffmpeg.exe means its licence ships tooMost popular static builds are GPL. Bundle one in an installer and you owe the GPL text + source pointer for that binary.
Web
ffmpeg.wasm counts as distributionThe wrapper is MIT, but @ffmpeg/core is GPL-2.0-or-later and gets downloaded to every visitor. Add a licence + source link in your footer or About.
Patents
Open source doesn't mean royalty-freeH.264/HEVC/AAC/VVC have patent pools. AV1, VP9, Opus, and FLAC were designed to be royalty-free, though third-party patent pools exist for VP9 and AV1 too. OpenH264's patent cover only applies to Cisco's own binary.
Non-free
--enable-nonfree builds stay on your machinefdk-aac plus FFmpeg is fine for local encoding and not shippable. FFmpeg's native AAC encoder is the redistributable option.
Yours
Your licence doesn't replace theirsYou can keep your own code closed ("All rights reserved") and still use MIT or BSD code inside it. That's what permissive means. But their copyright and permission notice must stay with their code: in the source, and in the notices you ship. Removing it, or presenting their code as yours, is what breaks the licence. Free to use is not the same as free to claim.
Mismatch
Top-level LICENSE vs what's insideAn MIT repo that vendors GPL code or bundles a GPL ffmpeg build is the most common accidental issue. A notices file and an honest root LICENSE fix it.
Drift
Licences and maintainers changevid.stab moved GPL→LGPL (FFmpeg still asks for --enable-gpl to use it); fluent-ffmpeg and FFmpegKit were archived; mp4-muxer and webm-muxer are deprecated in favour of Mediabunny (MPL-2.0), their old versions stay MIT; MKVToolNix moved to Codeberg. Re-check on upgrades.

Sources

Plus each project's own LICENSE/COPYING, linked from its row in the toolbox.

Practitioner notes, checked line by line against each project's own licence files and repos on 28 October 2026. Not legal advice. For a commercial launch, a quick review by someone qualified is still worth it. Spot something new or changed? Edit the TOOLS list at the bottom of this file.