Skip to content

v4 Package Architecture

typed-ffmpeg v4 is a monorepo that publishes separate PyPI packages for each FFmpeg major version. This page explains the structure and how to choose the right package.

Packages

PyPI Package FFmpeg Version Install
typed-ffmpeg Latest (v8) pip install typed-ffmpeg
typed-ffmpeg-v5 FFmpeg 5.x pip install typed-ffmpeg-v5
typed-ffmpeg-v6 FFmpeg 6.x pip install typed-ffmpeg-v6
typed-ffmpeg-v7 FFmpeg 7.x pip install typed-ffmpeg-v7
typed-ffmpeg-v8 FFmpeg 8.x pip install typed-ffmpeg-v8
ffmpeg-core (runtime, auto-installed)
ffmpeg-data-v5..v8 (cache data, optional) pip install typed-ffmpeg-vN[parse]

Which Package Should I Install?

For most users: pip install typed-ffmpeg — this installs the latest bindings (currently v8) and receives updates automatically.

For production deployments: install the package that matches your system's FFmpeg version so the typed bindings match exactly what FFmpeg accepts.

# Check your FFmpeg version
ffmpeg -version | head -1
# ffmpeg version 6.1.1 ...

# Install the matching package
pip install typed-ffmpeg-v6

For CI / testing across versions: install multiple packages side-by-side (they coexist without conflicts).

Package Dependency Graph

typed-ffmpeg (meta)
    └── typed-ffmpeg-v8
            └── ffmpeg-core

typed-ffmpeg-v5 ──┐
typed-ffmpeg-v6   ├── ffmpeg-core (shared runtime)
typed-ffmpeg-v7 ──┘

ffmpeg-core contains the hand-written runtime code (DAG, compiler, IR) and is installed automatically as a dependency of any typed-ffmpeg-vX package. You do not need to install it directly.

Optional [parse] Extra

Each version package has an optional parse extra that installs the corresponding data package:

typed-ffmpeg-v7[parse]
    └── ffmpeg-data-v7   (~6 MB, version-specific cache data)

The data packages contain pre-parsed FFmpeg filter/option/codec/format definitions needed by ffmpeg.compile.compile_cli.parse() to reconstruct filter graphs from FFmpeg command lines. Most users do not need this — it is only required if you call parse() or compile_as_python().

Repository Structure

typed-ffmpeg/          # monorepo root
├── packages/
│   ├── core/          # ffmpeg-core: shared runtime
│   ├── data-v5/       # ffmpeg-data-v5: cache data for FFmpeg 5.x
│   ├── data-v6/       # ffmpeg-data-v6: cache data for FFmpeg 6.x
│   ├── data-v7/       # ffmpeg-data-v7: cache data for FFmpeg 7.x
│   ├── data-v8/       # ffmpeg-data-v8: cache data for FFmpeg 8.x
│   ├── v5/            # typed-ffmpeg-v5
│   ├── v6/            # typed-ffmpeg-v6
│   ├── v7/            # typed-ffmpeg-v7
│   ├── v8/            # typed-ffmpeg-v8
│   └── latest/        # typed-ffmpeg (meta, re-exports v8)
├── docs/
└── scripts/           # code generation tools

Usage

All packages expose the same ffmpeg namespace — your code is identical regardless of which package you install:

import ffmpeg

# Probe a file
info = ffmpeg.probe("video.mp4")

# Build and run a filter graph
(
    ffmpeg.input("input.mp4")
    .hflip()
    .output("output.mp4")
    .run()
)

See the Usage section for full examples.

Migrating from typed-ffmpeg 3.x

See the Migration Guide.