Skip to content

ffmpeg_options.txt

Ricardo Constantino edited this page Dec 23, 2017 · 19 revisions

FFmpeg configure options and what do they add

Most external libraries manually turned on configuration time are only actually needed for encoding or certain filters.

External libraries needed for basic support of formats (decoding)

Can be removed if format support is not needed

  • --enable-amf (enabled by default) (needed for AMD hardware encoding)
  • --enable-schannel (enabled by default) (needed for https support)
    • alternative is --enable-gnutls or --enable-openssl but the latter needs --enable-nonfree since it has a license incompatible with GPL
  • --enable-libilbc (needed for iLBC decoding support)
  • --enable-libmfx (needed for Intel QuickSync encoding/decoding)
  • --enable-libopencore-amrnb and --enable-libopencore-amrwb (AMR codecs support)
    • FFmpeg has a native decoder for both variants, but missing some features like comfort noise generation
  • --enable-libspeex (needed for speex support)
  • --enable-libxml2 (needed for DASH demuxing)
  • --enable-nvenc (enabled by default) (needed for Nvidia hardware encoding)

External libraries needed for encoding

Can be removed if encoding for these formats is not needed since FFmpeg has a native decoder for them

  • --enable-libfdk-aac (High quality AAC encoder that supports LC and HE profiles)
    • Needs --enable-nonfree
    • FFmpeg's native encoder is considered better or as good from 96kbps onward, but it still has no support for HE profiles
  • --enable-libgsm (GSM encoder)
  • --enable-libkvazaar (HEVC encoder)
  • --enable-libmp3lame (MP3 encoder)
  • --enable-libopencore-amrnb (AMR Narrowband encoder)
  • --enable-libopus (Opus encoder/decoder)
  • --enable-libsnappy (Snappy compressor needed for Hap encoding)
  • --enable-libtheora (Theora encoder)
  • --enable-libtwolame (MP2 encoder)
  • --enable-libvo-amrwbenc (AMR Wideband encoder)
  • --enable-libvorbis (Vorbis encoder)
    • consider using --disable-encoder=vorbis if using this since FFmpeg's native encoder is shit
  • --enable-libvpx (Google VP8/VP9 encoder)
  • --enable-libwebp (WebP encoder)
  • --enable-libx264 (H.264/AVC encoder)
  • --enable-libx265 (HEVC encoder)
  • --enable-libxavs (XAVS encoder)
  • --enable-libxvid (MPEG-4/XviD encoder)
    • FFmpeg's native mpeg4 encoder is high quality too so this isn't needed

Libraries needed for filters/devices/protocols

All can be removed from ffmpeg_options.txt if not needed

Libraries needed for special formats

All can be removed from ffmpeg_options.txt if not needed

  • --enable-libgme (demuxer/decoder for game sound formats)
  • --enable-libmodplug (demuxer/decoder for module sound formats)
  • --enable-libopenmpt (demuxer/decoder for module sound formats)
  • --enable-libzvbi (DVB teletext decoder)

Extra libraries

All can be removed from ffmpeg_options.txt if not needed

  • --enable-libflite (flite source filter)
  • --enable-libopenh264 (alternative h264 encoder/decoder)
  • --enable-libopenjpeg (JPEG 2000/J2K video support)
    • FFmpeg has a native decoder and encoder
  • --enable-libsoxr (alternative resampler engine for swresample)
  • --enable-libwavpack (alternative WavPack encoder/decoder)
    • FFmpeg has a native decoder and encoder but is probably slower