Skip to content

Supported external libraries

Oleksandr Berezhnyi edited this page Jun 20, 2022 · 17 revisions

Currently the ffmpeg-android-maker supports only external libraries from the table below. The script automatically downloads their source code and builds according to specified script arguments.

External libraries don't depend on each other. You are free to enable only those you actually need.

Library name Flag to enable GPL Notes
libaom ‑‑enable‑libaom or ‑aom No The encoder in this library requires Android API at least 18 to be compiled (‑android=18). The decoder can be built with this argument set to 16.
libbluray ‑‑enable‑libbluray or ‑bluray No
libdav1d ‑‑enable‑libdav1d or ‑dav1d No Uses Meson build system. Certain versions of Meson can't build the library for reasons. 0.52.1 and 0.53.2 are ok.
Also this library requires nasm >= 2.14 and ninja >= 1.9.
If installing all necessary software is an issue for you check out the Docker support page.
libfreetype ‑‑enable‑libfreetype or ‑freetype No
libfribidi ‑‑enable‑libfribidi or ‑fribidi No
libmp3lame ‑‑enable‑libmp3lame or ‑mp3lame or ‑lame No
libopus ‑‑enable‑libopus or ‑opus No
libspeex ‑‑enable‑libspeex or ‑speex No
libtwolame ‑‑enable‑libtwolame or ‑twolame No Currently without libsndfile dependency.
libvpx ‑‑enable‑libvpx or ‑vpx No The FFmpeg itself supports decoders for VP8 and VP9 and they both have higher priority than libvpx_vp8 and libvpx_vp9. If native vp8 and vp9 aren't needed at all, then they can be disabled with --disable-decoder=vp8 and --disable-decoder=vp9 flags for FFMpeg's configure script. When LLVM is used for compilation the ‑android=21 flag is required.
libwavpack ‑‑enable‑libwavpack or ‑wavpack No
libwebp ‑‑enable‑libwebp or ‑webp No, but
libx264 ‑‑enable‑libx264 or ‑x264 Yes Enabling this library causes the output binaries and shared libraries of FFmpeg to be under GPL 2 license.

To enable multiple supported external libraries (from the table above) you can add:

Flag Meaning
‑‑enable‑all‑free or ‑all‑free Enables all supported free libraries that don't change the license of result binaries. It remains LGPL 2.1.
‑‑enable‑all‑gpl or ‑all‑gpl Enables all supported libraries that do change the license of result binaries to GPL 2 or greater.
Clone this wiki locally