X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fgeneral.texi;h=79a23e17181f33dd41f05cc98f6738ab23ecbfa5;hb=b8dfc108a22501fc7b07cf1c1835d3d9e576398a;hp=06f7a78d8a103ca21bc63125b50ba4f54ff555cc;hpb=203bbaccfaaeac9548862e83792d38509a8c8167;p=ffmpeg diff --git a/doc/general.texi b/doc/general.texi index 06f7a78d8a1..79a23e17181 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -17,7 +17,104 @@ for more formats. None of them are used by default, their use has to be explicitly requested by passing the appropriate flags to @command{./configure}. -@section libdavs2 +@section Alliance for Open Media (AOM) + +FFmpeg can make use of the AOM library for AV1 decoding and encoding. + +Go to @url{http://aomedia.org/} and follow the instructions for +installing the library. Then pass @code{--enable-libaom} to configure to +enable it. + +@section AMD AMF/VCE + +FFmpeg can use the AMD Advanced Media Framework library +for accelerated H.264 and HEVC(only windows) encoding on hardware with Video Coding Engine (VCE). + +To enable support you must obtain the AMF framework header files(version 1.4.9+) from +@url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}. + +Create an @code{AMF/} directory in the system include path. +Copy the contents of @code{AMF/amf/public/include/} into that directory. +Then configure FFmpeg with @code{--enable-amf}. + +Initialization of amf encoder occurs in this order: +1) trying to initialize through dx11(only windows) +2) trying to initialize through dx9(only windows) +3) trying to initialize through vulkan + +To use h.264(AMD VCE) encoder on linux amdgru-pro version 19.20+ and amf-amdgpu-pro +package(amdgru-pro contains, but does not install automatically) are required. + +This driver can be installed using amdgpu-pro-install script in official amd driver archive. + +@section AviSynth + +FFmpeg can read AviSynth scripts as input. To enable support, pass +@code{--enable-avisynth} to configure. The correct headers are +included in compat/avisynth/, which allows the user to enable support +without needing to search for these headers themselves. + +For Windows, supported AviSynth variants are +@url{http://avisynth.nl, AviSynth 2.6 RC1 or higher} for 32-bit builds and +@url{http://avisynth.nl/index.php/AviSynth+, AviSynth+ r1718 or higher} for 32-bit and 64-bit builds. + +For Linux and OS X, the supported AviSynth variant is +@url{https://github.com/avxsynth/avxsynth, AvxSynth}. + +@float NOTE +In 2016, AviSynth+ added support for building with GCC. However, due to +the eccentricities of Windows' calling conventions, 32-bit GCC builds +of AviSynth+ are not compatible with typical 32-bit builds of FFmpeg. + +By default, FFmpeg assumes compatibility with 32-bit MSVC builds of +AviSynth+ since that is the most widely-used and entrenched build +configuration. Users can override this and enable support for 32-bit +GCC builds of AviSynth+ by passing @code{-DAVSC_WIN32_GCC32} to +@code{--extra-cflags} when configuring FFmpeg. + +64-bit builds of FFmpeg are not affected, and can use either MSVC or +GCC builds of AviSynth+ without any special flags. +@end float + +@float NOTE +AviSynth and AvxSynth are loaded dynamically. Distributors can build FFmpeg +with @code{--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). +@end float + +@section Chromaprint + +FFmpeg can make use of the Chromaprint library for generating audio fingerprints. +Pass @code{--enable-chromaprint} to configure to +enable it. See @url{https://acoustid.org/chromaprint}. + +@section codec2 + +FFmpeg can make use of the codec2 library for codec2 decoding and encoding. +There is currently no native decoder, so libcodec2 must be used for decoding. + +Go to @url{http://freedv.org/}, download "Codec 2 source archive". +Build and install using CMake. Debian users can install the libcodec2-dev package instead. +Once libcodec2 is installed you can pass @code{--enable-libcodec2} to configure to enable it. + +The easiest way to use codec2 is with .c2 files, since they contain the mode information required for decoding. +To encode such a file, use a .c2 file extension and give the libcodec2 encoder the -mode option: +@code{ffmpeg -i input.wav -mode 700C output.c2}. +Playback is as simple as @code{ffplay output.c2}. +For a list of supported modes, run @code{ffmpeg -h encoder=libcodec2}. +Raw codec2 files are also supported. +To make sense of them the mode in use needs to be specified as a format option: +@code{ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav}. + +@section dav1d + +FFmpeg can make use of the dav1d library for AV1 video decoding. + +Go to @url{https://code.videolan.org/videolan/dav1d} and follow the instructions for +installing the library. Then pass @code{--enable-libdav1d} to configure to enable it. + +@section davs2 FFmpeg can make use of the davs2 library for AVS2-P2/IEEE1857.4 video decoding. @@ -31,21 +128,63 @@ libdavs2 is under the GNU Public License Version 2 or later details), you must upgrade FFmpeg's license to GPL in order to use it. @end float -@section Alliance for Open Media libaom +@section Game Music Emu -FFmpeg can make use of the libaom library for AV1 decoding. +FFmpeg can make use of the Game Music Emu library to read audio from supported video game +music file formats. Pass @code{--enable-libgme} to configure to +enable it. See @url{https://bitbucket.org/mpyne/game-music-emu/overview}. -Go to @url{http://aomedia.org/} and follow the instructions for -installing the library. Then pass @code{--enable-libaom} to configure to +@section Intel QuickSync Video + +FFmpeg can use Intel QuickSync Video (QSV) for accelerated decoding and encoding +of multiple codecs. To use QSV, FFmpeg must be linked against the @code{libmfx} +dispatcher, which loads the actual decoding libraries. + +The dispatcher is open source and can be downloaded from +@url{https://github.com/lu-zero/mfx_dispatch.git}. FFmpeg needs to be configured +with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to +locate the dispatcher's @code{.pc} files. + +@section Kvazaar + +FFmpeg can make use of the Kvazaar library for HEVC encoding. + +Go to @url{https://github.com/ultravideo/kvazaar} and follow the +instructions for installing the library. Then pass +@code{--enable-libkvazaar} to configure to enable it. + +@section LAME + +FFmpeg can make use of the LAME library for MP3 encoding. + +Go to @url{http://lame.sourceforge.net/} and follow the +instructions for installing the library. +Then pass @code{--enable-libmp3lame} to configure to enable it. + +@section 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. FFmpeg can make use of the libilbc library for +iLBC decoding and encoding. + +Go to @url{https://github.com/TimothyGu/libilbc} and follow the instructions for +installing the library. Then pass @code{--enable-libilbc} to configure to enable it. -@section OpenJPEG +@section libvpx -FFmpeg can use the OpenJPEG libraries for encoding/decoding J2K videos. Go to -@url{http://www.openjpeg.org/} to get the libraries and follow the installation -instructions. To enable using OpenJPEG in FFmpeg, pass @code{--enable-libopenjpeg} to -@file{./configure}. +FFmpeg can make use of the libvpx library for VP8/VP9 decoding and encoding. +Go to @url{http://www.webmproject.org/} and follow the instructions for +installing the library. Then pass @code{--enable-libvpx} to configure to +enable it. + +@section ModPlug + +FFmpeg can make use of this library, originating in Modplug-XMMS, to read from MOD-like music files. +See @url{https://github.com/Konstanty/libmodplug}. Pass @code{--enable-libmodplug} to configure to +enable it. @section OpenCORE, VisualOn, and Fraunhofer libraries @@ -92,13 +231,27 @@ Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for installing the library. Then pass @code{--enable-libfdk-aac} to configure to enable it. -@section LAME +@section OpenH264 -FFmpeg can make use of the LAME library for MP3 encoding. +FFmpeg can make use of the OpenH264 library for H.264 decoding and encoding. -Go to @url{http://lame.sourceforge.net/} and follow the -instructions for installing the library. -Then pass @code{--enable-libmp3lame} to configure to enable it. +Go to @url{http://www.openh264.org/} and follow the instructions for +installing the library. Then pass @code{--enable-libopenh264} to configure to +enable it. + +For decoding, this library is much more limited than the built-in decoder +in libavcodec; currently, this library lacks support for decoding B-frames +and some other main/high profile features. (It currently only supports +constrained baseline profile and CABAC.) Using it is mostly useful for +testing and for taking advantage of Cisco's patent portfolio license +(@url{http://www.openh264.org/BINARY_LICENSE.txt}). + +@section OpenJPEG + +FFmpeg can use the OpenJPEG libraries for decoding/encoding J2K videos. Go to +@url{http://www.openjpeg.org/} to get the libraries and follow the installation +instructions. To enable using OpenJPEG in FFmpeg, pass @code{--enable-libopenjpeg} to +@file{./configure}. @section TwoLAME @@ -108,33 +261,18 @@ Go to @url{http://www.twolame.org/} and follow the instructions for installing the library. Then pass @code{--enable-libtwolame} to configure to enable it. -@section libcodec2 / codec2 general +@section VapourSynth -FFmpeg can make use of libcodec2 for codec2 encoding and decoding. -There is currently no native decoder, so libcodec2 must be used for decoding. +FFmpeg can read VapourSynth scripts as input. To enable support, pass +@code{--enable-vapoursynth} to configure. Vapoursynth is detected via +@code{pkg-config}. Versions 42 or greater supported. +See @url{http://www.vapoursynth.com/}. -Go to @url{http://freedv.org/}, download "Codec 2 source archive". -Build and install using CMake. Debian users can install the libcodec2-dev package instead. -Once libcodec2 is installed you can pass @code{--enable-libcodec2} to configure to enable it. - -The easiest way to use codec2 is with .c2 files, since they contain the mode information required for decoding. -To encode such a file, use a .c2 file extension and give the libcodec2 encoder the -mode option: -@code{ffmpeg -i input.wav -mode 700C output.c2}. -Playback is as simple as @code{ffplay output.c2}. -For a list of supported modes, run @code{ffmpeg -h encoder=libcodec2}. -Raw codec2 files are also supported. -To make sense of them the mode in use needs to be specified as a format option: -@code{ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav}. - -@section libvpx +Due to security concerns, Vapoursynth scripts will not +be autodetected so the input format has to be forced. For ff* CLI tools, +add @code{-f vapoursynth} before the input @code{-i yourscript.vpy}. -FFmpeg can make use of the libvpx library for VP8/VP9 encoding. - -Go to @url{http://www.webmproject.org/} and follow the instructions for -installing the library. Then pass @code{--enable-libvpx} to configure to -enable it. - -@section libwavpack +@section WavPack FFmpeg can make use of the libwavpack library for WavPack encoding. @@ -142,29 +280,6 @@ Go to @url{http://www.wavpack.com/} and follow the instructions for installing the library. Then pass @code{--enable-libwavpack} to configure to enable it. -@section libxavs - -FFmpeg can make use of the libxavs library for Xavs encoding. - -Go to @url{http://xavs.sf.net/} and follow the instructions for -installing the library. Then pass @code{--enable-libxavs} to configure to -enable it. - -@section OpenH264 - -FFmpeg can make use of the OpenH264 library for H.264 encoding and decoding. - -Go to @url{http://www.openh264.org/} and follow the instructions for -installing the library. Then pass @code{--enable-libopenh264} to configure to -enable it. - -For decoding, this library is much more limited than the built-in decoder -in libavcodec; currently, this library lacks support for decoding B-frames -and some other main/high profile features. (It currently only supports -constrained baseline profile and CABAC.) Using it is mostly useful for -testing and for taking advantage of Cisco's patent portfolio license -(@url{http://www.openh264.org/BINARY_LICENSE.txt}). - @section x264 FFmpeg can make use of the x264 library for H.264 encoding. @@ -193,91 +308,36 @@ x265 is under the GNU Public License Version 2 or later details), you must upgrade FFmpeg's license to GPL in order to use it. @end float -@section kvazaar +@section xavs -FFmpeg can make use of the kvazaar library for HEVC encoding. +FFmpeg can make use of the xavs library for AVS encoding. -Go to @url{https://github.com/ultravideo/kvazaar} and follow the -instructions for installing the library. Then pass -@code{--enable-libkvazaar} to configure to enable it. - -@section 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. FFmpeg can make use of the libilbc library for -iLBC encoding and decoding. - -Go to @url{https://github.com/TimothyGu/libilbc} and follow the instructions for -installing the library. Then pass @code{--enable-libilbc} to configure to +Go to @url{http://xavs.sf.net/} and follow the instructions for +installing the library. Then pass @code{--enable-libxavs} to configure to enable it. -@section libzvbi +@section xavs2 -libzvbi is a VBI decoding library which can be used by FFmpeg to decode DVB -teletext pages and DVB teletext subtitles. +FFmpeg can make use of the xavs2 library for AVS2-P2/IEEE1857.4 video encoding. -Go to @url{http://sourceforge.net/projects/zapping/} and follow the instructions for -installing the library. Then pass @code{--enable-libzvbi} to configure to +Go to @url{https://github.com/pkuvcl/xavs2} and follow the instructions for +installing the library. Then pass @code{--enable-libxavs2} to configure to enable it. -@section AviSynth - -FFmpeg can read AviSynth scripts as input. To enable support, pass -@code{--enable-avisynth} to configure. The correct headers are -included in compat/avisynth/, which allows the user to enable support -without needing to search for these headers themselves. - -For Windows, supported AviSynth variants are -@url{http://avisynth.nl, AviSynth 2.6 RC1 or higher} for 32-bit builds and -@url{http://avs-plus.net, AviSynth+ r1718 or higher} for 32-bit and 64-bit builds. - -For Linux and OS X, the supported AviSynth variant is -@url{https://github.com/avxsynth/avxsynth, AvxSynth}. - -@float NOTE -There is currently a regression in AviSynth+'s @code{capi.h} header as of -October 2016, which interferes with the ability for builds of FFmpeg to use -MSVC-built binaries of AviSynth. Until this is resolved, you can make sure -a known good version is installed by checking out a version from before -the regression occurred: - -@code{git clone -b MT git://github.com/AviSynth/AviSynthPlus.git @* -cd AviSynthPlus @* -git checkout -b oldheader b4f292b4dbfad149697fb65c6a037bb3810813f9 @* -make install PREFIX=/install/prefix} -@end float - @float NOTE -AviSynth and AvxSynth are loaded dynamically. Distributors can build FFmpeg -with @code{--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). +libxavs2 is under the GNU Public License Version 2 or later +(see @url{http://www.gnu.org/licenses/old-licenses/gpl-2.0.html} for +details), you must upgrade FFmpeg's license to GPL in order to use it. @end float -@section Intel QuickSync Video - -FFmpeg can use Intel QuickSync Video (QSV) for accelerated encoding and decoding -of multiple codecs. To use QSV, FFmpeg must be linked against the @code{libmfx} -dispatcher, which loads the actual decoding libraries. - -The dispatcher is open source and can be downloaded from -@url{https://github.com/lu-zero/mfx_dispatch.git}. FFmpeg needs to be configured -with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to -locate the dispatcher's @code{.pc} files. - -@section AMD VCE - -FFmpeg can use the AMD Advanced Media Framework library for accelerated H.264 -and HEVC encoding on VCE enabled hardware under Windows. - -To enable support you must obtain the AMF framework header files from -@url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}. +@section ZVBI -Create an @code{AMF/} directory in the system include path. -Copy the contents of @code{AMF/amf/public/include/} into that directory. -Then configure FFmpeg with @code{--enable-amf}. +ZVBI is a VBI decoding library which can be used by FFmpeg to decode DVB +teletext pages and DVB teletext subtitles. +Go to @url{http://sourceforge.net/projects/zapping/} and follow the instructions for +installing the library. Then pass @code{--enable-libzvbi} to configure to +enable it. @chapter Supported File Formats, Codecs or Features @@ -418,6 +478,8 @@ library: @item IEC61937 encapsulation @tab X @tab X @item IFF @tab @tab X @tab Interchange File Format +@item IFV @tab @tab X + @tab A format used by some old CCTV DVRs. @item iLBC @tab X @tab X @item Interplay MVE @tab @tab X @tab Format used in various Interplay computer games. @@ -531,6 +593,7 @@ library: @item raw VC-1 @tab X @tab X @item raw PCM A-law @tab X @tab X @item raw PCM mu-law @tab X @tab X +@item raw PCM Archimedes VIDC @tab X @tab X @item raw PCM signed 8 bit @tab X @tab X @item raw PCM signed 16 bit big-endian @tab X @tab X @item raw PCM signed 16 bit little-endian @tab X @tab X @@ -574,6 +637,7 @@ library: @item SAP @tab X @tab X @item SBG @tab @tab X @item SDP @tab @tab X +@item SER @tab @tab X @item Sega FILM/CPK @tab X @tab X @tab Used in many Sega Saturn console games. @item Silicon Graphics Movie @tab @tab X @@ -634,7 +698,7 @@ library: @item Psygnosis YOP @tab @tab X @end multitable -@code{X} means that encoding (resp. decoding) is supported. +@code{X} means that the feature in that column (encoding / decoding) is supported. @section Image Formats @@ -704,7 +768,7 @@ following image formats are supported: @tab X Window Dump image format @end multitable -@code{X} means that encoding (resp. decoding) is supported. +@code{X} means that the feature in that column (encoding / decoding) is supported. @code{E} means that support is provided through an external library. @@ -742,8 +806,8 @@ following image formats are supported: @item Autodesk Animator Flic video @tab @tab X @item Autodesk RLE @tab @tab X @tab fourcc: AASC -@item AV1 @tab @tab E - @tab Supported through external library libaom +@item AV1 @tab E @tab E + @tab Supported through external libraries libaom and libdav1d @item Avid 1:1 10-bit RGB Packer @tab X @tab X @tab fourcc: AVrp @item AVS (Audio Video Standard) video @tab @tab X @@ -892,6 +956,8 @@ following image formats are supported: @tab Video encoding used in NuppelVideo files. @item On2 VP3 @tab @tab X @tab still experimental +@item On2 VP4 @tab @tab X + @tab fourcc: VP40 @item On2 VP5 @tab @tab X @tab fourcc: VP50 @item On2 VP6 @tab @tab X @@ -986,7 +1052,7 @@ following image formats are supported: @tab Encoder works only in PAL8. @end multitable -@code{X} means that encoding (resp. decoding) is supported. +@code{X} means that the feature in that column (encoding / decoding) is supported. @code{E} means that support is provided through an external library. @@ -1001,6 +1067,7 @@ following image formats are supported: @item AAC+ @tab E @tab IX @tab encoding supported through external library libfdk-aac @item AC-3 @tab IX @tab IX +@item ACELP.KELVIN @tab @tab X @item ADPCM 4X Movie @tab @tab X @item APDCM Yamaha AICA @tab @tab X @item ADPCM CDROM XA @tab @tab X @@ -1092,10 +1159,10 @@ following image formats are supported: @item DPCM Sol @tab @tab X @item DPCM Xan @tab @tab X @tab Used in Origin's Wing Commander IV AVI files. -@item DSD (Direct Stream Digitial), least significant bit first @tab @tab X -@item DSD (Direct Stream Digitial), most significant bit first @tab @tab X -@item DSD (Direct Stream Digitial), least significant bit first, planar @tab @tab X -@item DSD (Direct Stream Digitial), most significant bit first, planar @tab @tab X +@item DSD (Direct Stream Digital), least significant bit first @tab @tab X +@item DSD (Direct Stream Digital), most significant bit first @tab @tab X +@item DSD (Direct Stream Digital), least significant bit first, planar @tab @tab X +@item DSD (Direct Stream Digital), most significant bit first, planar @tab @tab X @item DSP Group TrueSpeech @tab @tab X @item DST (Direct Stream Transfer) @tab @tab X @item DV audio @tab @tab X @@ -1132,6 +1199,7 @@ following image formats are supported: @tab encoding supported through external library libopus @item PCM A-law @tab X @tab X @item PCM mu-law @tab X @tab X +@item PCM Archimedes VIDC @tab X @tab X @item PCM signed 8-bit planar @tab X @tab X @item PCM signed 16-bit big-endian planar @tab X @tab X @item PCM signed 16-bit little-endian planar @tab X @tab X @@ -1204,7 +1272,7 @@ following image formats are supported: @item Xbox Media Audio 2 @tab @tab X @end multitable -@code{X} means that encoding (resp. decoding) is supported. +@code{X} means that the feature in that column (encoding / decoding) is supported. @code{E} means that support is provided through an external library. @@ -1272,6 +1340,7 @@ performance on systems without hardware floating point support). @item TCP @tab X @item TLS @tab X @item UDP @tab X +@item ZMQ @tab E @end multitable @code{X} means that the protocol is supported.