/asdf-ffmpeg

An asdf plugin for juggling different versions of ffmpeg

Primary LanguageShellMIT LicenseMIT

asdf-ffmpeg Build Lint

ffmpeg plugin for the asdf version manager.

Contents

Dependencies

To build FFmpeg, you will need to install a few libraries. You can try the commands below. If they don't work for you, please have a look at the FFmpeg documentation.

Depending on the install options you choose, FFmpeg may require more libraries to be installed. See the Libraries and add-ons section below.

macOS with Homebrew

brew install automake fdk-aac git lame libass libtool libvorbis libvpx \
  opus sdl2 shtool texi2html theora wget x264 x265 xvid nasm zimg

You might also need to set CFLAGS and LDFLAGS so that the compiler/linker toolchain can find headers and libraries from your Homebrew packages:

export CFLAGS="$CFLAGS -I$(brew --prefix)/include"
export LDFLAGS="$LDFLAGS -L$(brew --prefix)/lib"

Ubuntu

sudo apt-get update -qq && sudo apt-get -y install \
  autoconf automake build-essential cmake git-core libass-dev \
  libfreetype6-dev libgnutls28-dev libmp3lame-dev libsdl2-dev libtool \
  libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
  libxcb-xfixes0-dev meson ninja-build pkg-config texinfo wget yasm \
  zlib1g-dev

Install

First, install this plugin:

asdf plugin add ffmpeg
# or
asdf plugin add ffmpeg https://github.com/acj/asdf-ffmpeg.git

Second, choose which options you want to enable. Here is a reasonable starting point with broad support for modern codecs:

# Tip: put this in your ~/.bashrc or ~/.zshrc so that it's available for future installs
export ASDF_FFMPEG_ENABLE="libaom fontconfig freetype frei0r lame libass libvorbis libvpx opus rtmpdump sdl2 snappy theora x264 x265 xz"

Then, select a version of ffmpeg and install it:

# Show all installable versions
asdf list-all ffmpeg

# Install specific version
asdf install ffmpeg latest

# Set a version globally (on your ~/.tool-versions file)
asdf global ffmpeg latest

# Now ffmpeg commands are available
ffmpeg -version

If there are errors during the build, you might need to install additional libraries.

Libraries and add-ons

You can configure FFmpeg to support more features and media formats by enabling options. See the FFmpeg documentation for a list of options that are supported by the version you're using.

Toggling options

This plugin looks for an environment variable named ASDF_FFMPEG_ENABLE to determine which options to enable. The value of the variable should be a space-separated list of options. For example, to enable the libx264 and libvpx options, you would set the environment variable like this:

export ASDF_FFMPEG_ENABLE="libx264 libvpx"

It can also be done inline during the install:

ASDF_FFMPEG_ENABLE="libass libvpx" asdf install ffmpeg latest

If you want to pass arbitrary options to ffmpeg's configure script, you can use ASDF_FFMPEG_OPTIONS_EXTRA:

export ASDF_FFMPEG_OPTIONS_EXTRA="--extra-version=my-ffmpeg-build"

Tools and utilities

FFmpeg includes a handful of often-overlooked tools that are useful for troubleshooting and other advanced work. These tools are not installed by default, but you can enable them by setting ASDF_FFMPEG_ENABLE_TOOLS. For example, to enable ffescape and graph2dot, use the following:

export ASDF_FFMPEG_ENABLE_TOOLS="ffescape graph2dot"

A full list of tools can be found in the FFmpeg source tree.

Contributing

Contributions are welcome! See the contributing guide.

License

MIT. See LICENSE for details.