Skip to main content

PyPI PyPI - Status PyPI - Python Version GitHub License GitHub Workflow Status

Python ffmpeg-downloader package automatically downloads the latest FFmpeg prebuilt binaries for Windows, Linux, & MacOS. It’s cli interface mimics that of pip to install, uninstall, list, search, and download available FFmpeg versions. This package is ideal for those who:

  • Use the git snapshot version of FFmpeg

  • Are in Windows environment

Those who intend to use a release version in Linux and MacOS are encouraged to install via the OS package manager (e.g., apt-get for Ubuntu and brew for MacOS).

The FFmpeg builds will be downloaded from 3rd party hosts:

Windows & Linux

https://github.com/BtbN/FFmpeg-Builds

Windows

https://www.gyan.dev/ffmpeg/builds

Linux

https://johnvansickle.com/ffmpeg

MacOS

https://osxexperts.net/

MacOS

https://evermeet.cx/ffmpeg

If you appreciate their effort to build and host these builds, please consider donating on their websites.

Note that BtbN and Gyan offer multiple build types. Use the ffdl.list command.

Installation

pip install ffmpeg-downloader

Console Commands

In cli, use ffdl command after the package is installed. Alternately, you can call the module by python -m ffmpeg_downloader. For full help, run:

ffdl -h <command>

To download and install FFmpeg binaries

ffdl install

This command downloads and installs the latest FFmpeg release. You will see the progress messages similar to the following:

Collecting ffmpeg
  Using cached ffmpeg-5.1.2-essentials_build.zip (79 MB)
Installing collected FFmpeg binaries: 5.1.2@essentials
Successfully installed FFmpeg binaries: 5.1.2@essentials in
  C:\Users\User\AppData\Local\ffmpegio\ffmpeg-downloader\ffmpeg\bin

In Linux, symlinks fo the installed binaries are automatically created in ~/.local/bin or ~/bin so the FFmpeg commands are immediately available (only if one of these directories already exists).

In Windows and MacOS, the binary folder can be added to the system path by –add-path option:

ffdl install --add-path

The new system paths won’t be applied to the current console window. You may need to close and reopen or possibly log out and log back in for the change to take effect.

To install the latest git master snapshot build:

ffdl install snapshot

To list or search available release versions:

Use list and search commands to see available releases.

The list command lists all the releases:

ffdl list

An example Linux output:

Version        Available Builds (*=cached)          Provider
-------------  -----------------------------------  -----------------
3.3.4          static                               johnvansickle.com
3.4.2          static                               johnvansickle.com
4.0.3          static                               johnvansickle.com
4.1.4          static                               johnvansickle.com
4.2.1          static                               johnvansickle.com
4.2.2          static                               johnvansickle.com
4.3.1          static                               johnvansickle.com
4.3.2          static                               johnvansickle.com
4.4            static                               johnvansickle.com
4.4.1          static                               johnvansickle.com
5.0.1          static                               johnvansickle.com
5.1.1          static                               johnvansickle.com
5.1.5.post106  gpl, gpl-shared, lgpl, lgpl-shared   btbn
5.1.6.post16   gpl, gpl-shared, lgpl, lgpl-shared   btbn
6.0            static                               johnvansickle.com
6.0.1          static                               johnvansickle.com
6.1.1.post329  gpl, gpl-shared, lgpl, lgpl-shared   btbn
6.1.2.post192  gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.0.1.post221  gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.0.2          static*                              johnvansickle.com
7.0.2.post6    gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.1.post214    gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.1.1.post57   gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.1.2.post7    gpl, gpl-shared, lgpl, lgpl-shared   btbn
7.1.3.post46   gpl, gpl-shared, lgpl, lgpl-shared   btbn
8.0.post30     gpl, gpl-shared, lgpl, lgpl-shared   btbn
8.0.1.post66   gpl, gpl-shared, lgpl, lgpl-shared   btbn
8.1.post11     gpl*, gpl-shared, lgpl, lgpl-shared  btbn
8.1.1.post1    gpl*, gpl-shared*, lgpl*             btbn
8.1.1.post2    gpl, gpl-shared, lgpl, lgpl-shared   btbn

To install specific build, ffdl install <version>@<build_type>

Note: Currently -shared builds in Linux could not be used in Python

Windows output:

Version        Available Builds (*=cached)         Provider
-------------  ----------------------------------  ----------
4.4            essentials, full, full-shared       gyan
4.4.1          essentials, full, full-shared       gyan
5.0            essentials, full, full-shared       gyan
5.0.1          essentials, full, full-shared       gyan
5.1            essentials, full, full-shared       gyan
5.1.1          essentials, full, full-shared       gyan
5.1.2          essentials, full, full-shared       gyan
5.1.5.post106  gpl, gpl-shared, lgpl, lgpl-shared  btbn
5.1.6.post16   gpl, gpl-shared, lgpl, lgpl-shared  btbn
6.0            essentials, full, full-shared       gyan
6.1            essentials, full, full-shared       gyan
6.1.1          essentials, full, full-shared       gyan
6.1.1.post329  gpl, gpl-shared, lgpl, lgpl-shared  btbn
6.1.2.post192  gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.0            essentials, full, full-shared       gyan
7.0.1          essentials, full, full-shared       gyan
7.0.1.post221  gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.0.2          essentials, full, full-shared       gyan
7.0.2.post6    gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.1            essentials, full, full-shared       gyan
7.1.post214    gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.1.1          essentials, full, full-shared       gyan
7.1.1.post57   gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.1.2.post7    gpl, gpl-shared, lgpl, lgpl-shared  btbn
7.1.3.post46   gpl, gpl-shared, lgpl, lgpl-shared  btbn
8.0            essentials, full, full-shared       gyan
8.0.post30     gpl, gpl-shared, lgpl, lgpl-shared  btbn
8.0.1          essentials, full, full-shared       gyan
8.0.1.post66   gpl, gpl-shared, lgpl, lgpl-shared  btbn
8.1            essentials, full, full-shared       gyan
8.1.post11     gpl, gpl-shared, lgpl, lgpl-shared  btbn
8.1.1          essentials, full, full-shared       gyan
8.1.1.post2    gpl, gpl-shared, lgpl, lgpl-shared  btbn

To install specific build, ffdl install <version>@<build_type>

For MacOS (arm64), only one file would be listed:

  Version  Available Builds (*=cached)    Provider
---------  -----------------------------  --------------
      8.1  static                         osxexperts.net

To install specific build, ffdl install <version>@<build_type>

The search command lists only the releases that matches the query:

ffdl search 7 # lists all v7 releases
ffdl search @gpl # list all releases with gpl builds (of btbn)
ffdl search =7.0.2 # lists only v7.0.2 release, excluding 7.0.2post versions

To specify a release version:

Add version number as the last argument of the install command similar as the search command:

ffdl install 7 # install the latest v7 release
ffdl install @gpl # install the latest BtBN gpl build of FFmpeg 7
ffdl install =7.0.2 # install the 7.0.2 release from johnvansickle.com or
                    # gyan.dev (excludes BtBN post release)

 ffdl install snapshot@full   # full build of latest snapshot

To update or change version if available

Like pip, use -U or --upgrade flag

ffdl install -U

To uninstall

ffdl uninstall

In Python

This package has the following useful attributes:

import ffmpeg_downloader as ffdl

ffdl.ffmpeg_dir     # FFmpeg binaries directory
ffdl.ffmpeg_version # version string of the intalled FFmpeg
ffdl.ffmpeg_path    # full path of the FFmpeg binary
ffdl.ffprobe_path   # full path of the FFprobe binary
ffdl.ffplay_path    # full path of the FFplay binary

The ffxxx_path attributes are useful to call FFxxx command with subprocess:

# To call FFmpeg via subprocess
import subprocess as sp

sp.run([ffdl.ffmpeg_path, '-i', 'input.mp4', 'output.mkv'])

Meanwhile, there are many FFmpeg wrapper packages which do not let you specify the FFmpeg path or cumbersome to do so. If installing the FFmpeg with --add-path option is not preferable, use ffmpeg_downloader.add_path() function to make the binaries available to these packages.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ffmpeg_downloader-0.5.3.tar.gz (39.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ffmpeg_downloader-0.5.3-py3-none-any.whl (49.1 kB view details)

Uploaded Python 3

File details

Details for the file ffmpeg_downloader-0.5.3.tar.gz.

File metadata

  • Download URL: ffmpeg_downloader-0.5.3.tar.gz
  • Upload date:
  • Size: 39.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ffmpeg_downloader-0.5.3.tar.gz
Algorithm Hash digest
SHA256 cf4faa7634517e0199404bce221e7302edf3c91f8cbfaba6611874edb4a288fe
MD5 63f665465cb90a762264ea5b12fe6c2d
BLAKE2b-256 e5ff4e35597a2ff655e5bc1bc941b6f5458ba5a909265d7b63a172adb2db6a8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffmpeg_downloader-0.5.3.tar.gz:

Publisher: test_n_pub.yml on python-ffmpegio/python-ffmpeg-downloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ffmpeg_downloader-0.5.3-py3-none-any.whl.

File metadata

File hashes

Hashes for ffmpeg_downloader-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3aefcb753b652f1ff7bfd67db6f558f1223b60192c03d2388b319200e44b7be3
MD5 fd37db485e5a165089a2926ec957c89a
BLAKE2b-256 e776bece3dbfede12b7c3624cc8831f025bb50c3235ac25200a6369c9306ea8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffmpeg_downloader-0.5.3-py3-none-any.whl:

Publisher: test_n_pub.yml on python-ffmpegio/python-ffmpeg-downloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.5.3 This release

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page