What FFmpeg actually is
FFmpeg is a free, open-source project that can decode, encode, transcode, mux, demux, stream, filter and play close to every audio and video format that exists — from formats defined by standards bodies down to obscure, decades-old ones a hobbyist invented once. It runs on Linux, macOS, Windows, the BSDs and Solaris, and its own test suite (called FATE) checks all of them on every change.
If you just want to convert or edit a file
You want the ffmpeg command-line tool. Point it at a file and tell it what
you want out the other end:
ffmpeg -i input.mp4 output.avi
That one line converts a container format, but the same tool trims clips, resizes video, strips or replaces audio tracks, burns in subtitles, and extracts still frames — the kind of jobs a video editor's "export" button does, minus the editor. Two smaller companion tools ship alongside it: ffplay, a bare-bones media player for quickly checking a file plays correctly, and ffprobe, which reports everything it can work out about a file — codecs, duration, frame rate, embedded metadata — without changing it.
If you're building an app that touches media
The command-line tool is a thin shell around seven libraries, and most software that "just works" with video links against them directly rather than shelling out:
| Library | What it does |
|---|---|
libavcodec |
Encoders and decoders for audio and video codecs |
libavformat |
Reading and writing container formats (muxing/demuxing) |
libavfilter |
Media filters — scaling, cropping, overlays, and more |
libavdevice |
Grabbing from and rendering to system audio/video devices |
libavutil |
Shared utilities: math, data structures, core helpers |
libswscale |
Fast image scaling and pixel-format/colour-space conversion |
libswresample |
Audio resampling, rematrixing and sample-format conversion |
The project's own description of its priorities is worth keeping: where there's a clear best technical option it picks one, and where there genuinely isn't, it supports both and lets the caller choose. It's also unusually receptive to outside contributions — patches, bug reports and code review are treated as the normal way the project moves forward, not an exception.
If you're shipping something that includes it
FFmpeg is licensed under the LGPL 2.1 (or later), with some optional, higher-performance parts under the stricter GPL 2 (or later) — and if you enable any of those, the GPL applies to your whole build, not just that part. There's a real compliance checklist to follow if you're distributing a binary, and a separate, unavoidable question about software patents on the codecs themselves, since FFmpeg doesn't and can't tell you whether a given format is safe to ship in your jurisdiction.