ffmpeg configure配置選項

幫助選項(Help options)

用於查看ffmpeg的能力

選項 說明
–help print this message
–list-decoders 顯示所有可用的解碼器(h264/mjpeg等)
–list-encoders 顯示所有可用的編碼器(h264/mjpeg等)
–list-hwaccels 顯示所有支持的硬編解碼器(h264_videotoolbox/h264_mediacodec等)
–list-demuxers 顯示所有支持解複用的容器(mp4/h264等)
–list-muxers 顯示所有支持複用的容器(mp4/h264等)
–list-parsers show all available parsers
–list-protocols 顯示所有支持的傳輸協議(rtmp/rtp等)
–list-bsfs 顯示所有可用的格式轉換(h264_mp4toannexb/aac_adtstoasc等)
–list-indevs 顯示所有支持的輸入設備(alsa/v4l2等)
–list-outdevs 顯示所有支持的輸出設備(alsa/opengl等)
–list-filters 顯示支持的所有過濾器(scale/volume/fps/allyuv等)

標準選項(Standard options)

編譯配置

選項 說明
–logfile=FILE 配置過程中的log輸出文件,默認輸出到當前位置的ffbuild/config.log文件
–disable-logging 配置過程中不輸出日誌
–fatal-warnings 把配置過程中的任何警告當做致命的錯誤處理
–prefix=PREFIX 設定安裝的跟目錄,如果不指定默認是/usr
–bindir=DIR 設置可執行程序的安裝位置,默認是[PREFIX/bin]
–datadir=DIR 設置測試程序以及數據的安裝位置,默認是[PREFIX/share/ffmpeg]
–docdir=DIR 設置文檔的安裝目錄,默認是[PREFIX/share/doc/ffmpeg]
–libdir=DIR 設置靜態庫的安裝位置,默認是[PREFIX/lib]
–shlibdir=DIR 設置動態庫的安裝位置,默認是[LIBDIR]
–incdir=DIR 設置頭文件的安裝位置,默認是[PREFIX/include];一般來說用於依賴此頭文件來開發就夠了
–mandir=DIR 設置man文件的安裝目錄,默認是[PREFIX/share/man]
–pkgconfigdir=DIR 設置pkgconfig的安裝目錄,默認是[LIBDIR/pkgconfig],只有--enable-shared使能的時候這個選項纔有效
–enable-rpath use rpath to allow installing libraries in paths not part of the dynamic linker search path use rpath when linking programs [USE WITH CARE]
–install-name-dir=DIR Darwin directory name for installed targets

許可證選項(Licensing options)

選擇許可證,FFMPEG默認許可證LGPL 2.1,如果需要加gpl的庫需要使用gpl的許可證,例如libx264就是gpl的,如果需要加入libx264則需要--enable-gpl

選項 說明
–enable-gpl allow use of GPL code, the resulting libs and binaries will be under GPL [no]
–enable-version3 upgrade (L)GPL to version 3 [no]
–enable-nonfree allow use of nonfree code, the resulting libs and binaries will be unredistributable [no]

配置選項(Configuration options)

編譯選項的配置

選項 說明
–disable-static 不生產靜態庫,默認生成靜態庫
–enable-shared 生成動態庫,默認不生成動態庫
–enable-small optimize for size instead of speed,默認開啓
–disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary),默認開啓
–enable-gray enable full grayscale support (slower color)
–disable-swscale-alpha disable alpha channel support in swscale
–disable-all 禁止編譯所有庫和可執行程序
–enable-raise-major 增加主版本號

程序選項(Program options)

可執行程序開啓選項,默認編譯ffmpeg中的所有可執行程序,包括ffmpeg、ffplay、ffprobe、ffserver,不過Mac平臺默認情況下不生成ffplay,目前暫未知道啥原因。

選項 說明
–disable-programs do not build command line programs
–disable-ffmpeg disable ffmpeg build
–disable-ffplay disable ffplay build
–disable-ffprobe disable ffprobe build
–disable-ffserver disable ffserver build

文檔選項(Documentation options)

離線文檔選擇

選項 說明
–disable-doc do not build documentation
–disable-htmlpages do not build HTML documentation pages
–disable-manpages do not build man documentation pages
–disable-podpages do not build POD documentation pages
–disable-txtpages do not build text documentation pages

組件選項(Component options)

除了avresample模塊,默認編譯所有模塊。一般來說用於輕量化ffmpeg庫的大小,可以僅僅開啓指定某些組件的某些功能。

選項 說明
–disable-avdevice disable libavdevice build
–disable-avcodec disable libavcodec build
–disable-avformat disable libavformat build
–disable-swresample disable libswresample build
–disable-swscale disable libswscale build
–disable-postproc disable libpostproc build
–disable-avfilter disable libavfilter build
–enable-avresample enable libavresample build [no]
–disable-pthreads disable pthreads [autodetect]
–disable-w32threads disable Win32 threads [autodetect]
–disable-os2threads disable OS/2 threads [autodetect]
–disable-network disable network support [no]
–disable-dct disable DCT code
–disable-dwt disable DWT code
–disable-error-resilience disable error resilience code
–disable-lsp disable LSP code
–disable-lzo disable LZO decoder code
–disable-mdct disable MDCT code
–disable-rdft disable RDFT code
–disable-fft disable FFT code
–disable-faan disable floating point AAN (I)DCT code
–disable-pixelutils disable pixel utils in libavutil

個別組件選項(Individual component options)

可以用於設定開啓指定功能,例如禁止所有encoders,在這裏可以開啓特定的encoders(x264、aac等)

選項 說明
–disable-everything disable all components listed below
–disable-encoder=NAME disable encoder NAME
–enable-encoder=NAME enable encoder NAME
–disable-encoders disable all encoders
–disable-decoder=NAME disable decoder NAME
–enable-decoder=NAME enable decoder NAME
–disable-decoders disable all decoders
–disable-hwaccel=NAME disable hwaccel NAME
–enable-hwaccel=NAME enable hwaccel NAME
–disable-hwaccels disable all hwaccels
–disable-muxer=NAME disable muxer NAME
–enable-muxer=NAME enable muxer NAME
–disable-muxers disable all muxers
–disable-demuxer=NAME disable demuxer NAME
–enable-demuxer=NAME enable demuxer NAME
–disable-demuxers disable all demuxers
–enable-parser=NAME enable parser NAME
–disable-parser=NAME disable parser NAME
–disable-parsers disable all parsers
–enable-bsf=NAME enable bitstream filter NAME
–disable-bsf=NAME disable bitstream filter NAME
–disable-bsfs disable all bitstream filters
–enable-protocol=NAME enable protocol NAME
–disable-protocol=NAME disable protocol NAME
–disable-protocols disable all protocols
–enable-indev=NAME enable input device NAME
–disable-indev=NAME disable input device NAME
–disable-indevs disable input devices
–enable-outdev=NAME enable output device NAME
–disable-outdev=NAME disable output device NAME
–disable-outdevs disable output devices
–disable-devices disable all devices
–enable-filter=NAME enable filter NAME
–disable-filter=NAME disable filter NAME
–disable-filters disable all filters

擴展庫支持(External library support)

ffmpeg提供的一些功能是由其他擴展庫支持的,如果需要使用需要明確聲明,確定編譯的第三方庫的目標架構--arch相同就好了,在編譯ffmpeg的時候需加入第三方庫的頭文和庫搜索路徑(通過extra-cflagsextra-ldflags指定即可),剩下的事ffmpeg都給你做好了。

$ git clone http://source.ffmpeg.org/git/ffmpeg.git
$ cd x264
$ ./configure --prefix=$FFMPEG_PREFIX --enable-static --enable-shared
$ make -j8 && make install
選項 說明
–enable-avisynth enable reading of AviSynth script files [no]
–disable-bzlib disable bzlib [autodetect]
–enable-chromaprint enable audio fingerprinting with chromaprint [no]
–enable-frei0r enable frei0r video filtering [no]
–enable-gcrypt enable gcrypt, needed for rtmp(t)e support if openssl, librtmp or gmp is not used [no]
–enable-gmp enable gmp, needed for rtmp(t)e support if openssl or librtmp is not used [no]
–enable-gnutls enable gnutls, needed for https support if openssl is not used [no]
–disable-iconv disable iconv [autodetect]
–enable-jni enable JNI support [no]
–enable-ladspa enable LADSPA audio filtering [no]
–enable-libass enable libass subtitles rendering, needed for subtitles and ass filter [no]
–enable-libbluray enable BluRay reading using libbluray [no]
–enable-libbs2b enable bs2b DSP library [no]
–enable-libcaca enable textual display using libcaca [no]
–enable-libcelt enable CELT decoding via libcelt [no]
–enable-libcdio enable audio CD grabbing with libcdio [no]
–enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no]
–enable-libebur128 enable libebur128 for EBU R128 measurement, needed for loudnorm filter [no]
–enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
–enable-libflite enable flite (voice synthesis) support via libflite [no]
–enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
–enable-libfreetype enable libfreetype, needed for drawtext filter [no]
–enable-libfribidi enable libfribidi, improves drawtext filter [no]
–enable-libgme enable Game Music Emu via libgme [no]
–enable-libgsm enable GSM de/encoding via libgsm [no]
–enable-libiec61883 enable iec61883 via libiec61883 [no]
–enable-libilbc enable iLBC de/encoding via libilbc [no]
–enable-libkvazaar enable HEVC encoding via libkvazaar [no]
–enable-libmodplug enable ModPlug via libmodplug [no]
–enable-libmp3lame enable MP3 encoding via libmp3lame [no]
–enable-libnut enable NUT (de)muxing via libnut, native (de)muxer exists [no]
–enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
–enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
–enable-libopencv enable video filtering via libopencv [no]
–enable-libopenh264 enable H.264 encoding via OpenH264 [no]
–enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
–enable-libopenmpt enable decoding tracked files via libopenmpt [no]
–enable-libopus enable Opus de/encoding via libopus [no]
–enable-libpulse enable Pulseaudio input via libpulse [no]
–enable-librubberband enable rubberband needed for rubberband filter [no]
–enable-librtmp enable RTMP[E] support via librtmp [no]
–enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
–enable-libshine enable fixed-point MP3 encoding via libshine [no]
–enable-libsmbclient enable Samba protocol via libsmbclient [no]
–enable-libsnappy enable Snappy compression, needed for hap encoding [no]
–enable-libsoxr enable Include libsoxr resampling [no]
–enable-libspeex enable Speex de/encoding via libspeex [no]
–enable-libssh enable SFTP protocol via libssh [no]
–enable-libtesseract enable Tesseract, needed for ocr filter [no]
–enable-libtheora enable Theora encoding via libtheora [no]
–enable-libtwolame enable MP2 encoding via libtwolame [no]
–enable-libv4l2 enable libv4l2/v4l-utils [no]
–enable-libvidstab enable video stabilization using vid.stab [no]
–enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
–enable-libvorbis enable Vorbis en/decoding via libvorbis, native implementation exists [no]
–enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
–enable-libwavpack enable wavpack encoding via libwavpack [no]
–enable-libwebp enable WebP encoding via libwebp [no]
–enable-libx264 enable H.264 encoding via x264 [no]
–enable-libx265 enable HEVC encoding via x265 [no]
–enable-libxavs enable AVS encoding via xavs [no]
–enable-libxcb enable X11 grabbing using XCB [autodetect]
–enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
–enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
–enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
–enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no]
–enable-libzimg enable z.lib, needed for zscale filter [no]
–enable-libzmq enable message passing via libzmq [no]
–enable-libzvbi enable teletext support via libzvbi [no]
–disable-lzma disable lzma [autodetect]
–enable-decklink enable Blackmagic DeckLink I/O support [no]
–enable-mediacodec enable Android MediaCodec support [no]
–enable-netcdf enable NetCDF, needed for sofalizer filter [no]
–enable-openal enable OpenAL 1.1 capture support [no]
–enable-opencl enable OpenCL code
–enable-opengl enable OpenGL rendering [no]
–enable-openssl enable openssl, needed for https support if gnutls is not used [no]
–disable-schannel disable SChannel SSP, needed for TLS support on Windows if openssl and gnutls are not used [autodetect]
–disable-sdl2 disable sdl2 [autodetect]
–disable-securetransport disable Secure Transport, needed for TLS support on OSX if openssl and gnutls are not used [autodetect]
–enable-x11grab enable X11 grabbing (legacy) [no]
–disable-xlib disable xlib [autodetect]
–disable-zlib disable zlib [autodetect]

硬件加速功能(hardware acceleration features)

ffmpeg默認實現了移動端(Android和IOS)的硬編解碼,可以選擇disable的都是默認開啓的,可以關閉,可以選擇enable的都是需要自己解決依賴的。

選項 說明
–disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
–enable-cuda enable dynamically linked Nvidia CUDA code [no]
–enable-cuvid enable Nvidia CUVID support [autodetect]
–disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
–disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
–enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
–enable-libnpp enable Nvidia Performance Primitives-based code [no]
–enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
–disable-nvenc disable Nvidia video encoding code [autodetect]
–enable-omx enable OpenMAX IL code [no]
–enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
–disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
–disable-vda disable Apple Video Decode Acceleration code [autodetect]
–disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
–disable-videotoolbox disable VideoToolbox code [autodetect]

工具鏈選項(Toolchain options)

ffmpeg代碼本身是支持跨平臺的,要編譯不同的平臺需要配置不同平臺的交叉編譯工具鏈。ffmpeg都是c代碼,所以不需要配置c++的sysroot。常用的就幾個arch,cpu,cross-prefix,enable-cross-compile,sysroot,target-os,extra-cflags,extra-ldflags,enable-pic。現在Android和IOS幾乎沒有armv5的設備了,所以如果編譯這兩個平臺配置armv7和armv8就好了。

選項 說明
–arch=ARCH 選擇目標架構[armv7a/aarch64/x86/x86_64等]
–cpu=CPU 選擇目標cpu[armv7-a/armv8-a/x86/x86_64]
–cross-prefix=PREFIX 設定交叉編譯工具鏈的前綴,不算gcc/nm/as命令,例如android 32位的交叉編譯鏈$ndk_dir/toolchains/arm-linux-androideabi-$toolchain_version/prebuilt/linux-$host_arch/bin/arm-linux-androideabi-
–progs-suffix=SUFFIX program name suffix []
–enable-cross-compile 如果目標平臺和編譯平臺不同則需要使能它
–sysroot=PATH 交叉工具鏈的頭文件和庫位,例如Android 32位位置$ndk_dir/platforms/android-14/arch-arm
–sysinclude=PATH location of cross-build system headers
–target-os=OS 設置目標系統
–target-exec=CMD command to run executables on target
–target-path=DIR path to view of build directory on target
–target-samples=DIR path to samples directory on target
–tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
–toolchain=NAME set tool defaults according to NAME
–nm=NM use nm tool NM [nm -g]
–ar=AR use archive tool AR [ar]
–as=AS use assembler AS []
–ln_s=LN_S use symbolic link tool LN_S [ln -s -f]
–strip=STRIP use strip tool STRIP [strip]
–windres=WINDRES use windows resource compiler WINDRES [windres]
–yasmexe=EXE use yasm-compatible assembler EXE [yasm]
–cc=CC use C compiler CC [gcc]
–cxx=CXX use C compiler CXX [g++]
–objcc=OCC use ObjC compiler OCC [gcc]
–dep-cc=DEPCC use dependency generator DEPCC [gcc]
–ld=LD use linker LD []
–pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [pkg-config]
–pkg-config-flags=FLAGS pass additional flags to pkgconf []
–ranlib=RANLIB use ranlib RANLIB [ranlib]
–doxygen=DOXYGEN use DOXYGEN to generate API doc [doxygen]
–host-cc=HOSTCC use host C compiler HOSTCC
–host-cflags=HCFLAGS use HCFLAGS when compiling for host
–host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
–host-ld=HOSTLD use host linker HOSTLD
–host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
–host-libs=HLIBS use libs HLIBS when linking for host
–host-os=OS compiler host OS []
–extra-cflags=ECFLAGS 設置cflags,如果是Android平臺可以根據ndk內的設定,arm-linux-androideabi-4.6/setup.mk,建議參考你當前的setup來配置
–extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS []
–extra-objcflags=FLAGS add FLAGS to OBJCFLAGS []
–extra-ldflags=ELDFLAGS 參考cflags
–extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS []
–extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS []
–extra-libs=ELIBS add ELIBS []
–extra-version=STRING version string suffix []
–optflags=OPTFLAGS override optimization-related compiler flags
–build-suffix=SUFFIX library name suffix []
–enable-pic build position-independent code
–enable-thumb compile for Thumb instruction set
–enable-lto use link-time optimization
–env=”ENV=override” override the environment variables

高級選項(Advanced options)

選項 說明
–malloc-prefix=PREFIX prefix malloc and related names with PREFIX
–custom-allocator=NAME use a supported custom allocator
–disable-symver disable symbol versioning
–enable-hardcoded-tables use hardcoded tables instead of runtime generation
–disable-safe-bitstream-reader disable buffer boundary checking in bitreaders (faster, but may crash)
–enable-memalign-hack emulate memalign, interferes with memory debuggers
–sws-max-filter-size=N the max filter size swscale uses [256]

優化選項(Optimization options)

默認開啓各個平臺的彙編優化,有些嵌入式平臺可能並不能完整的支持架構的所有彙編指令,所以需要關閉。(自己理解的,沒有實戰)

選項 說明
–disable-asm disable all assembly optimizations
–disable-altivec disable AltiVec optimizations
–disable-vsx disable VSX optimizations
–disable-power8 disable POWER8 optimizations
–disable-amd3dnow disable 3DNow! optimizations
–disable-amd3dnowext disable 3DNow! extended optimizations
–disable-mmx disable MMX optimizations
–disable-mmxext disable MMXEXT optimizations
–disable-sse disable SSE optimizations
–disable-sse2 disable SSE2 optimizations
–disable-sse3 disable SSE3 optimizations
–disable-ssse3 disable SSSE3 optimizations
–disable-sse4 disable SSE4 optimizations
–disable-sse42 disable SSE4.2 optimizations
–disable-avx disable AVX optimizations
–disable-xop disable XOP optimizations
–disable-fma3 disable FMA3 optimizations
–disable-fma4 disable FMA4 optimizations
–disable-avx2 disable AVX2 optimizations
–disable-aesni disable AESNI optimizations
–disable-armv5te disable armv5te optimizations
–disable-armv6 disable armv6 optimizations
–disable-armv6t2 disable armv6t2 optimizations
–disable-vfp disable VFP optimizations
–disable-neon disable NEON optimizations
–disable-inline-asm disable use of inline assembly
–disable-yasm disable use of nasm/yasm assembly
–disable-mipsdsp disable MIPS DSP ASE R1 optimizations
–disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
–disable-msa disable MSA optimizations
–disable-mipsfpu disable floating point MIPS optimizations
–disable-mmi disable Loongson SIMD optimizations
–disable-fast-unaligned consider unaligned accesses slow

開發者選項(Developer options)

調試用的一些開關

選項 說明
–disable-debug disable debugging symbols
–enable-debug=LEVEL set the debug level []
–disable-optimizations disable compiler optimizations
–enable-extra-warnings enable more compiler warnings
–disable-stripping disable stripping of executables and shared libraries
–assert-level=level 0(default), 1 or 2, amount of assertion testing, 2 causes a slowdown at runtime.
–enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
–valgrind=VALGRIND run “make fate” tests through valgrind to detect memory leaks and errors, using the specified valgrind binary. Cannot be combined with –target-exec
–enable-ftrapv Trap arithmetic overflows
–samples=PATH location of test samples for FATE, if not set use $FATE_SAMPLES at make invocation time.
–enable-neon-clobber-test check NEON registers for clobbering (should be used only for debugging purposes)
–enable-xmm-clobber-test check XMM registers for clobbering (Win64-only; should be used only for debugging purposes)
–enable-random randomly enable/disable components
–disable-random
–enable-random=LIST randomly enable/disable specific components or
–disable-random=LIST component groups. LIST is a comma-separated list of NAME[:PROB] entries where NAME is a component (group) and PROB the probability associated with
–random-seed=VALUE seed value for –enable/disable-random
–disable-valgrind-backtrace do not print a backtrace under Valgrind (only applies to –disable-optimizations builds)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章