General Documentation

Table of Contents

1. External libraries

Libav can be hooked up with a number of external libraries to add support for more formats. None of them are used by default, their use has to be explicitly requested by passing the appropriate flags to ./configure.

1.1 OpenCORE and VisualOn libraries

Spun off Google Android sources, OpenCore, VisualOn and Fraunhofer libraries provide encoders for a number of audio codecs.

OpenCORE and VisualOn libraries are under the Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0 for details), which is incompatible with the LGPL version 2.1 and GPL version 2. You have to upgrade Libav’s license to LGPL version 3 (or if you have enabled GPL components, GPL version 3) to use it.

1.1.1 OpenCORE AMR

Libav can make use of the OpenCORE libraries for AMR-NB decoding/encoding and AMR-WB decoding.

Go to http://sourceforge.net/projects/opencore-amr/ and follow the instructions for installing the libraries. Then pass --enable-libopencore-amrnb and/or --enable-libopencore-amrwb to configure to enable them.

1.1.2 VisualOn AAC encoder library

Libav can make use of the VisualOn AACenc library for AAC encoding.

Go to http://sourceforge.net/projects/opencore-amr/ and follow the instructions for installing the library. Then pass --enable-libvo-aacenc to configure to enable it.

1.1.3 VisualOn AMR-WB encoder library

Libav can make use of the VisualOn AMR-WBenc library for AMR-WB encoding.

Go to http://sourceforge.net/projects/opencore-amr/ and follow the instructions for installing the library. Then pass --enable-libvo-amrwbenc to configure to enable it.

1.1.4 Fraunhofer AAC library

Libav can make use of the Fraunhofer AAC library for AAC encoding.

Go to http://sourceforge.net/projects/opencore-amr/ and follow the instructions for installing the library. Then pass --enable-libfdk-aac to configure to enable it.

1.2 LAME

Libav can make use of the LAME library for MP3 encoding.

Go to http://lame.sourceforge.net/ and follow the instructions for installing the library. Then pass --enable-libmp3lame to configure to enable it.

1.3 TwoLAME

Libav can make use of the TwoLAME library for MP2 encoding.

Go to http://www.twolame.org/ and follow the instructions for installing the library. Then pass --enable-libtwolame to configure to enable it.

1.4 libvpx

Libav can make use of the libvpx library for VP8 encoding.

Go to http://www.webmproject.org/ and follow the instructions for installing the library. Then pass --enable-libvpx to configure to enable it.

1.5 libwavpack

Libav can make use of the libwavpack library for WavPack encoding.

Go to http://www.wavpack.com/ and follow the instructions for installing the library. Then pass --enable-libwavpack to configure to enable it.

1.6 x264

Libav can make use of the x264 library for H.264 encoding.

Go to http://www.videolan.org/developers/x264.html and follow the instructions for installing the library. Then pass --enable-libx264 to configure to enable it.

x264 is under the GNU Public License Version 2 or later (see http://www.gnu.org/licenses/old-licenses/gpl-2.0.html for details), you must upgrade Libav’s license to GPL in order to use it.

1.7 x265

Libav can make use of the x265 library for HEVC encoding.

Go to http://x265.org/developers.html and follow the instructions for installing the library. Then pass --enable-libx265 to configure to enable it.

x265 is under the GNU Public License Version 2 or later (see http://www.gnu.org/licenses/old-licenses/gpl-2.0.html for details), you must upgrade Libav’s license to GPL in order to use it.

1.8 libilbc

iLBC is a narrowband speech codec that has been made freely available by Google as part of the WebRTC project. libilbc is a packaging friendly copy of the iLBC codec. Libav can make use of the libilbc library for iLBC encoding and decoding.

Go to https://github.com/dekkers/libilbc and follow the instructions for installing the library. Then pass --enable-libilbc to configure to enable it.

1.9 AviSynth

Libav can read AviSynth scripts as input. To enable support you need a suitable ‘avisynth_c.h’ header to compile against. The header in classic AviSynth’s CVS repository is not compatible as it has not been updated to support AviSynth 2.6. AviSynth 2.5 is not supported by Libav. Once you have the appropriate header, pass --enable-avisynth to configure to enable AviSynth support.

For Windows, supported AviSynth variants are AviSynth 2.6 for 32-bit builds and AviSynth+ 0.1 for 32-bit and 64-bit builds. The necessary ‘avisynth_c.h’ header is the variant in the ‘extras/’ directory of the x264 source tree. For convenience, this header is also available from a temporary repository along with an installation routine.

For Linux and OS X, the supported AviSynth variant is AvxSynth. ‘avxsynth_c.h’ is installed as part of the normal build routine, as illustrated on AvxSynth’s wiki. (the instructions for compiling its prerequisites are outdated, as FFMS 2.18 or higher is now needed; the list of dependencies to be downloaded from the repositories is still the same, though).

AviSynth and AvxSynth are loaded dynamically. Distributors can build Libav with --enable-avisynth, and the binaries will work regardless of the end user having AviSynth or AvxSynth installed - they’ll only need to be installed to use AviSynth scripts (obviously).

2. Supported File Formats and Codecs

You can use the -formats and -codecs options to have an exhaustive list.

2.1 File Formats

Libav supports the following file formats through the libavformat library:

NameEncodingDecodingComments
4xmX4X Technologies format, used in some games.
8088flex TMVX
Adobe FilmstripXX
Audio IFF (AIFF)XX
American Laser Games MMXMultimedia format used in games like Mad Dog McCree.
3GPP AMRXX
Amazing Studio Packed Animation FileXMultimedia format used in game Heart Of Darkness.
Apple HTTP Live StreamingX
ASFXX
AVIXX
AviSynthX
AVSXMultimedia format used by the Creature Shock game.
Beam Software SIFFXAudio and video format used in some games by Beam Software.
Bethesda Softworks VIDXUsed in some games from Bethesda Softworks.
BinkXMultimedia format used by many games.
Bitmap Brothers JVXUsed in Z and Z95 games.
Brute Force & IgnoranceXUsed in the game Flash Traffic: City of Angels.
BWFXX
CRI ADXXXAudio-only format used in console video games.
Discworld II BMVX
Interplay C93XUsed in the game Cyberia from Interplay.
Delphine Software International CINXMultimedia format used by Delphine Software games.
CD+GXVideo format used by CD+G karaoke disks
Commodore CDXLXAmiga CD video format
Core Audio FormatXApple Core Audio Format
CRC testing formatX
Creative VoiceXXCreated for the Sound Blaster Pro.
CRYO APCXAudio format used in some games by CRYO Interactive Entertainment.
D-Cinema audioXX
Deluxe Paint AnimationX
DFAXThis format is used in Chronomaster game
DV videoXX
DXAXThis format is used in the non-Windows version of the Feeble Files game and different game cutscenes repacked for use with ScummVM.
Electronic Arts cdataX
Electronic Arts MultimediaXUsed in various EA games; files have extensions like WVE and UV2.
Flash (SWF)XX
Flash 9 (AVM2)XXOnly embedded audio is decoded.
FLI/FLC/FLX animationX.fli/.flc files
Flash Video (FLV)XXMacromedia Flash video files
framecrc testing formatX
FunCom ISSXAudio format used in various games from FunCom like The Longest Journey.
GIF AnimationX
GXFXXGeneral eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers.
HNMXOnly version 4 supported, used in some games from Cryo Interactive
id Quake II CIN videoX
id RoQXXUsed in Quake III, Jedi Knight 2, other computer games.
IEC61937 encapsulationXX
IFFXInterchange File Format
iLBCXX
Interplay MVEXFormat used in various Interplay computer games.
IV8XA format generated by IndigoVision 8000 video server.
IVF (On2)XXA format used by libvpx
LATMXX
LMLM4XUsed by Linux Media Labs MPEG-4 PCI boards
LXFXVR native stream format, used by Leitch/Harris’ video servers.
MatroskaXX
Matroska audioX
FFmpeg metadataXXMetadata in text format.
MAXIS XAXUsed in Sim City 3000; fi