# Install FFmpeg

Set up FFmpeg on your system for local media processing

Ittybit's CLI uses FFmpeg under the hood for local processing. You don't need it for cloud processing — but if you want to run `ittybit video -i input.mp4 -o output.mp4` on your own machine, you'll need FFmpeg installed.

## macOS

```bash
brew install ffmpeg
```

Homebrew's build includes all common codecs (h264, h265, VP9, AV1, AAC, Opus) out of the box. No extra flags needed.

## Linux

### Ubuntu / Debian

```bash
sudo apt update && sudo apt install ffmpeg
```

Ubuntu 24.04 ships FFmpeg 6.1 with all common codecs. Older Ubuntu versions (22.04, 20.04) ship older builds but still include the essentials.

### Fedora / RHEL

FFmpeg isn't in Fedora's default repos. Enable RPM Fusion first:

```bash
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install ffmpeg
```

### Arch

```bash
sudo pacman -S ffmpeg
```

Arch tracks upstream closely and ships a fully-featured build.

## Windows

Pick whichever package manager you use:

```bash
# winget
winget install FFmpeg

# Chocolatey
choco install ffmpeg

# Scoop
scoop install ffmpeg
```

All three distribute full builds with all common codecs included.

## Verify your install

```bash
ffmpeg -version
```

Check the first line for the version number, then confirm the codecs you need are available:

```bash
ffmpeg -encoders 2>/dev/null | grep -E "libx264|libx265|libvpx|libaom|libopus|aac"
```

You should see entries for each. If any are missing, your build was compiled without them — see the section below.

You can also check your setup with the Ittybit CLI:

```bash
ittybit health
```

## Codec coverage

The default package manager builds on every platform include these codecs:

| Codec | Encoder   | Used for                     |
| ----- | --------- | ---------------------------- |
| H.264 | `libx264` | Universal web video          |
| H.265 | `libx265` | Smaller files, Apple devices |
| VP9   | `libvpx`  | WebM container               |
| AV1   | `libaom`  | Next-gen compression         |
| AAC   | `aac`     | Standard web audio           |
| Opus  | `libopus` | High-quality voice and music |

If you need something beyond these defaults, you can compile FFmpeg from source or use pre-built static binaries from [ffmpeg.org](https://ffmpeg.org/download.html).

## Static builds

If your package manager ships an old version or you need a specific build, static binaries are the fastest path to a current FFmpeg without compiling anything.

**macOS/Linux:**

Download a static build from the [FFmpeg download page](https://ffmpeg.org/download.html), extract it, and add it to your PATH.

**Windows:**

[gyan.dev](https://www.gyan.dev/ffmpeg/builds/) provides "essentials" and "full" builds. The essentials build covers all common codecs. The full build includes everything FFmpeg supports.

## Custom builds

For most Ittybit workflows, the default package manager build is all you need. If you're doing something unusual (hardware-accelerated encoding, specific filter chains, non-standard codecs), the [FFmpeg compilation guide](https://trac.ffmpeg.org/wiki/CompilationGuide) covers building from source on every platform.

## Licensing and patents

FFmpeg is open source (LGPL/GPL), but the codecs it bundles have their own licensing — some are royalty-free (AV1, VP9, Opus) and others involve patent pools (H.264, H.265). For local CLI use this doesn't matter, but if you're operating at scale or redistributing encoders, see the [FFmpeg legal page](https://ffmpeg.org/legal.html) for details.