[原]如何用Android NDK编译FFmpeg
来源:互联网 发布:信信通是正规软件吗 编辑:程序博客网 时间:2024/06/05 15:03
我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装。那么如何使用Android的NDK编译出来可以在Android下面可以使用的FFmpeg动态链接库呢?写下这篇文章就是学习如何裁剪并且编译出来可以使用的动态库。
一、获取FFmpeg源码:
首先在编译之前,得获取一份FFmpeg的源码,如果你没有git并且也不打算使用,你可以去FFmpeg官网http://ffmpeg.org/去下载Zip包。你也可以使用git来获取源码:
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg git reset --hard git clean -f -d git checkout -B stable 2.3.2
二、了解FFmpeg中configure选项:
执行./configure --help可以得到如下选项:
Usage: configure [options]Options: [defaults in brackets after descriptions]Help options: --help print this message --list-decoders show all available decoders --list-encoders show all available encoders --list-hwaccels show all available hardware accelerators --list-demuxers show all available demuxers --list-muxers show all available muxers --list-parsers show all available parsers --list-protocols show all available protocols --list-bsfs show all available bitstream filters --list-indevs show all available input devices --list-outdevs show all available output devices --list-filters show all available filtersStandard options: --logfile=FILE log tests and output to FILE [config.log] --disable-logging do not log configure debug information --fatal-warnings fail if any configure warning is generated --prefix=PREFIX install in PREFIX [] --bindir=DIR install binaries in DIR [PREFIX/bin] --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg] --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg] --libdir=DIR install libs in DIR [PREFIX/lib] --shlibdir=DIR install shared libs in DIR [PREFIX/lib] --incdir=DIR install includes in DIR [PREFIX/include] --mandir=DIR install man page in DIR [PREFIX/share/man] --enable-rpath use rpath to allow installing libraries in paths not part of the dynamic linker search pathLicensing options: --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 do not build static libraries [no] --enable-shared build shared libraries [no] --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 disable building components, libraries and programs --enable-incompatible-libav-abi enable incompatible Libav fork ABI [no] --enable-raise-major increase major version numbers in sonames [no]Program options: --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 buildDocumentation 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 pagesComponent options: --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build --disable-avformat disable libavformat build --disable-avutil disable libavutil 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 [auto] --disable-w32threads disable Win32 threads [auto] --disable-os2threads disable OS/2 threads [auto] --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 codeHardware accelerators: --disable-dxva2 disable DXVA2 code [autodetect] --disable-vaapi disable VAAPI code [autodetect] --disable-vda disable VDA code [autodetect] --disable-vdpau disable VDPAU code [autodetect]Individual component options: --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 filtersExternal library support: --enable-avisynth enable reading of AviSynth script files [no] --disable-bzlib disable bzlib [autodetect] --enable-fontconfig enable fontconfig --enable-frei0r enable frei0r video filtering --enable-gnutls enable gnutls [no] --disable-iconv disable iconv [autodetect] --enable-ladspa enable LADSPA audio filtering --enable-libaacplus enable AAC+ encoding via libaacplus [no] --enable-libass enable libass subtitles rendering [no] --enable-libbluray enable BluRay reading using libbluray [no] --enable-libbs2b enable bs2b DSP library [no] --enable-libcaca enable textual display using libcaca --enable-libcelt enable CELT decoding via libcelt [no] --enable-libcdio enable audio CD grabbing with libcdio --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no] --enable-libfaac enable AAC encoding via libfaac [no] --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] --enable-libflite enable flite (voice synthesis) support via libflite [no] --enable-libfreetype enable libfreetype [no] --enable-libfribidi enable libfribidi [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-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-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] --enable-libopus enable Opus de/encoding via libopus [no] --enable-libpulse enable Pulseaudio input via libpulse [no] --enable-libquvi enable quvi input via libquvi [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-libsoxr enable Include libsoxr resampling [no] --enable-libspeex enable Speex de/encoding via libspeex [no] --enable-libssh enable SFTP protocol via libssh [no] --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libtwolame enable MP2 encoding via libtwolame [no] --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] --enable-libv4l2 enable libv4l2/v4l-utils [no] --enable-libvidstab enable video stabilization using vid.stab [no] --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [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-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no] --enable-libzmq enable message passing via libzmq [no] --enable-libzvbi enable teletext support via libzvbi [no] --enable-decklink enable Blackmagick DeckLink output [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 [no] --enable-x11grab enable X11 grabbing [no] --disable-xlib disable xlib [autodetect] --disable-zlib disable zlib [autodetect]Toolchain options: --arch=ARCH select architecture [] --cpu=CPU select the minimum required CPU (affects instruction selection, may crash on older CPUs) --cross-prefix=PREFIX use PREFIX for compilation tools [] --progs-suffix=SUFFIX program name suffix [] --enable-cross-compile assume a cross-compiler is used --sysroot=PATH root of cross-build tree --sysinclude=PATH location of cross-build system headers --target-os=OS compiler targets 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 [] --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++] --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 add ECFLAGS to CFLAGS [] --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [] --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [] --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [] --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 optimizationAdvanced options (experts only): --malloc-prefix=PREFIX prefix malloc and related names with PREFIX --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 --enable-sram allow use of on-chip SRAM --sws-max-filter-size=N the max filter size swscale uses [256]Optimization options (experts only): --disable-asm disable all assembly optimizations --disable-altivec disable AltiVec 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-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-mips32r2 disable MIPS32R2 optimizations --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations --disable-mipsfpu disable floating point MIPS optimizations --disable-fast-unaligned consider unaligned accesses slowDeveloper options (useful when working on FFmpeg itself): --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 NAME (default 0.5). --random-seed=VALUE seed value for --enable/disable-randomNOTE: Object files are built at the place where configure is launched.
这些选项,这些选项是需要我们设置,有些选项可以是FFmpeg优化选项,可以针对CPU进行优化,也有一些选项可以不用编译进去,这样就可以减少编译出来的FFmpeg动态链接库的体积。
三、设置NDK:
export ANDROID_NDK=/path/to/your/android/ndk/rootexport FF_BUILD_ROOT=`pwd`export FF_BUILD_NAME=ffmpegexport FF_ANDROID_PLATFORM=android-14export FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchainexport FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysrootexport FF_MAKE_TOOLCHAIN_FLAGS="--install-dir=$FF_TOOLCHAIN_PATH"$ANDROID_NDK/build/tools/make-standalone-toolchain.sh $FF_MAKE_TOOLCHAIN_FLAGS --platform=$FF_ANDROID_PLATFORM --toolchain=$FF_TOOLCHAIN_NAME
在这一点上,我们可以使用Android工具链独立位于$ TOOLCHAINE建立我们的FFmpeg的。关于Android独立的工具链更多细节可以在Android的NDK的文档中找到。
四、设置FFmpeg:
在前面我们知道了FFmpeg有设置选项并且知道每一个选项是什么意思,在这里我们需要的就是设置这些选项,如上面所写如果都这么写的话就麻烦死了,于是下面这些都是可以在bash中执行的脚本语言:
FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/outputFF_CROSS_PREFIX=arm-linux-androideabiPATH=$FF_TOOLCHAIN_PATH/bin:$PATHCC="ccache ${FF_CROSS_PREFIX}-gcc"LD=${FF_CROSS_PREFIX}-ldAR=${FF_CROSS_PREFIX}-arSTRIP=${FF_CROSS_PREFIX}-strip
FF_CFLAGS="-O3 -Wall -pipe \ -std=c99 \ -ffast-math \ -fstrict-aliasing -Werror=strict-aliasing \ -Wno-psabi -Wa,--noexecstack \ -DANDROID -DNDEBUG"
前面说了的,我们可以对configure设置进行裁剪,在这里可以参考我们第二步中的confingure选择我们需要的选项进行设置:
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm --cpu=cortex-a8"FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-neno"FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-thumb"FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv7-a -mcpu=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb"FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS -Wl,--fix-cortex-a8"# Standard options:FF_CFG_FLAGS="$FF_CFG_FLAGS --prefix=$FF_PREFIX"#Licensing options:#allow use of GPL code, the resulting libsFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-gpl"#upgrade (L)GPL to version 3 [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-version3"#allow use of nonfree code, the resulting libs and binaries will be unredistributable [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-nonfree"#Configuration options:#do not build static libraries [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-static"#build shared libraries [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-shared"#optimize for size instead of speedFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-small"#disable detecting cpu capabilities at runtime (smaller binary)FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-runtime-cpudetect"#enable full grayscale support (slower color)FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-gray"#disable alpha channel support in swscaleFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-swsacle-alpha"#Program options:#do not build command line programsFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-programs"#disable ffmpeg buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffmpeg"#disable ffplay buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffplay"#disable ffprobe buildFF_CFG_FLAGS="$FF_CFG_FLAGS --diable-ffprobe"#disable ffserver buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffserver"#Documentation options:#do not build documentationFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-doc"#do not build HTML documentation pagesFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-htmlpages"#do not build man documentation pagesFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-manmpages"#do not build POD documentation pagesFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-podpages"#do not build text documentation pagesFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-txtpages"#Componet options:disable libpostproc build#disable libavdevice buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-avdevice"#disable libavcodec buildFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avcodec"#disable libavformat buildFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avformat"#disable libavutil buildFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avutil"#disable libswresample buildFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-swresample"#disable libswscale buildFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-swscale"#disable libpostproc buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-postproc"#disable libavfilter buildFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-avfilter"#enable libavresample build [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-avresample"#disable pthreads [auto]#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-pthreads"#disable Win32 threads [auto]#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-w32threads"#disable OS/2 threads [auto]#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-os2threads"#disable network support [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-network"#disable DCT code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-dct"#disable DWT code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-dwt"#disable LSP code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-lsp"#disable LZO decoder code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-lzo"#disable MDCT code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mdct"#disable RDFT code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-rdft"#disable FFT code# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-fft"#Hardware accelerators:#disable DXVA2 code [autodetect]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-dxva2"#disable VAAPI code [autodetect]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-vaapi"#enable VDA codeFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-vda"#disable VDPAU code [autodetect]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-vdpau"#Individual component options:#disable all components listed below#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-everythins"#disable all encodersFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-encoders"#disable all decodersFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-decoders"#disable decoder aacFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=aac"#disable decoder aac_latmFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=aac_latm"#disable decoder ac3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ac3"#disable decoder apeFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ape"#disable decoder flacFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=flac"#disable decoder flvFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=flv"#disable decoder h261FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h261"#disable decoder h263FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263"#disable decoder h263iFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263i"#disable decoder h263pFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263p"#disable decoder h264FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h264"#disable decoder mp3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3"#disable decoder mp3floatFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3float"#disable decoder mp3on4FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3on4"#disable decoder mp3on4floatFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3on4float"#disable decoder mpeg4FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mpeg4"#disable decoder msmpeg4v1FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v1"#disable decoder msmpeg4v2FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v2"#disable decoder msmpeg4v3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v3"#disable decoder pcm_*FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=pcm_*"#disable decoder ra_144FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ra_144"#disable decoder ra_288FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ra_288"#disable decoder ralfFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ralf"#disable decoder rv10FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv10"#disable decoder rv20FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv20"#disable decoder rv30FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv30"#disable decoder rv40FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv40"#disable decoder theoraFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=theora"#disable decoder vc1FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vc1"#disable decoder vorbisFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vorbis"#disable decoder vp3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp3"#disable decoder vp5FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp5"#disable decoder vp6FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6"#disable decoder vp6aFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6a"#disable decoder vp6fFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6f"#disable decoder vp8FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp8"#disable decoder webpFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=webp"#disable decoder wmalosslessFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmalossless"#disable decoder wmaproFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmapro"#disable decoder wmav1FF_CFG_FLAGS="$FF_CFG_FLAGS --eanble-decoder=wmav1"#disable decoder wmav2FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmav2"#disable decoder wmv1FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv1"#disable decoder wmv2FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv2"#disable decoder wmv3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv3"#disable all hwaccelsFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-hwaccels"#disable all muxersFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-muxers"#disable all muxer mpegtsFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-muxer=mpegts"#disable all demuxersFF_CFG_FLAGS="$FF_CFG_FLAGS --diable-demuxers"#disable demuxer aacFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=aac"#disable demuxer ac3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ac3"#disable demuxer apeFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ape"#disable demuxer asfFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=asf"#disable demuxer concatFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=concat"#disable demuxer dataFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=data"#disable demuxer flacFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=flac"#disable demuxer flvFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=flv"#disable demuxer h261FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h261"#disable demuxer h263FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h263"#disable demuxer h264FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h264"#disable demuxer hlsFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=hls"#disable demuxer latmFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=latm"#disable demuxer loasFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=loas"#disable demuxer m4vFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=m4v"#disable demuxer matroskaFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=matroska"#disable demuxer movFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mov"#disable demuxer mp3FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mp3"#disable demuxer mpegpsFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegps"#disable demuxer mpegtsFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegts"#disable demuxer mpegtsrawFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegtsraw"#disable demuxer mpegvideoFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegvideo"#disable demuxer oggFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ogg"#disable demuxer pcm_*FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=pcm_*"#disable demuxer rmFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rm"#disable demuxer rtpFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rtp"#disable demuxer rtspFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rtsp"#disable demuxer swfFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=swf"#disable demuxer ttaFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=tta"#disable demuxer vc1FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=vc1"#disable demuxer vc1tFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=vc1t"#disable demuxer wavFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=wav"#disable demuxer xmvFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=xmv"#disable demuxer xwmaFF_CFG_FLAGS="$FF_CFG_FLAGS --eanble-demuxer=xwma"#disable all parsersFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-parsers"#disable parser aac#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=aac"#disable parser aac_latm#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=aac_latm"#disable parser ac3#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parse=ac3"#disable parser adxFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=adx"#disable parser bmpFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=bmp"#disable parser cavsvideoFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=cavsvideo"#disable parser cookFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=cook"#disable parser dcaFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dca"#disable parser diracFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dirac"#disable parser dnxhdFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dnxhd"#disable parser dvbsubFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvbsub"#disable parser dvd_navFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvd_nav"#disable parser dvdsubFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvdsub"#disable parser flac#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=flac"#disable parser gsmFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=gsm"#disable parser h261#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=h261"#disable parser h263#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=h263"#disable parser h264#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=h264"#disable parser mjpegFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mjpeg"#disable parser mlpFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mlp"#disable parser mpeg4video#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mpeg4video"#disable parser mpegaudip#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mpegaudip"#disable parser mpegvideo#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mpegvideo"#disable parser pngFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=png"#disable parser pnmFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=pnm"#disable parser rv30#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=rv30"#disable parser rv40#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=rv40"#disable parser vc1FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vc1"#disable parser vorbisFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vorbis"#disable parser vp3FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vp3"#disable parser vp8FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vp8"#disable all bsfsFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-bsfs"#disable all protocolsFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-protocols"#disable all devicesFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-devices"#disable all filtersFF_CFG_FLAGS="$FF_CFG_FLAGS --disable-filters"#External library support#enable reading of AviSynth script files [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avisynth"#disable bzlib [autodetect] FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-bzlib"#enable fontconfigFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-fontconfig"#enable frei0r video filtering FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-frei0r"#enable gnutls [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-gnutls"#disable iconv [autodetect]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-iconv"#enable LADSPA audio filteringFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-ladspa"#enable AAC+ encoding via libaacplus [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libaacplus"#enable libass subtitles rendering [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libass"#enable BluRay reading using libbluray [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libbluray"#enable textual display using libcacaFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libcaca"#enable CELT decoding via libcelt [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libcelt"#enable audio CD grabbing with libcdioFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libcdio"#enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libdc1394"#enable AAC encoding via libfaac [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libfaac"#enable AAC de/encoding via libfdk-aac [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libfdk-aac"#enable flite (voice synthesis) support via libflite [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libflite" #enable libfreetype [no] FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libfreetype"#enable Game Music Emu via libgme [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libgme"#enable GSM de/encoding via libgsm [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libgsm"#enable iec61883 via libiec61883 [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libiec61883"#enable iLBC de/encoding via libilbc [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libilbc"#enable ModPlug via libmodplug [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libmodplug"#enable MP3 encoding via libmp3lame [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libmp3lame"#enable NUT (de)muxing via libnut, native (de)muxer exists [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libnut"#enable AMR-NB de/encoding via libopencore-amrnb [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libopencore-amrnb"# enable AMR-WB decoding via libopencore-amrwb [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libopencore-amrwb"#enable video filtering via libopencv [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libopencv"#enable JPEG 2000 de/encoding via OpenJPEG [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libopenjpeg"#enable Opus decoding via libopus [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libopus"#enable Pulseaudio input via libpulse [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libpulse"#enable quvi input via libquvi [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libquvi"#enable RTMP[E] support via librtmp [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-librtmp"#enable Dirac de/encoding via libschroedinger [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libschroedinger"#enable fixed-point MP3 encoding via libshine [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libshine"#enable Include libsoxr resampling [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libsoxr"#enable Speex de/encoding via libspeex [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libspeex"#enable SFTP protocol via libssh [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libssh"#enable H.264 decoding via libstagefright [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libstagefright-h264"#enable Theora encoding via libtheora [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libtheora"#enable MP2 encoding via libtwolame [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libtwolame"#enable Ut Video encoding and decoding via libutvideo [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libutvideo"#enable libv4l2/v4l-utils [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libv4l2"#enable video stabilization using vid.stab [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libvidstab"#enable AAC encoding via libvo-aacenc [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libvo-aacenc"#enable AMR-WB encoding via libvo-amrwbenc [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libvo-amrwbenc"#enable Vorbis en/decoding via libvorbis, native implementation exists [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libvorbis"#enable VP8 and VP9 de/encoding via libvpx [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libvpx"#enable wavpack encoding via libwavpack [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libwavpack"#enable H.264 encoding via x264 [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libx264"#enable AVS encoding via xavs [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libxavs"#enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libxvid"#enable message passing via libzmq [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libzmq"#enable teletext support via libzvbi [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libzvbi"#enable OpenAL 1.1 capture support [no] FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-openal"#enable OpenCL codeFF_CFG_FLAGS="$FF_CFG_FLAGS --enable-opencl"#enable openssl [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-openssl"#enable X11 grabbing [no]FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-x11grab"#disable zlib [autodetect]FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-zlib"#Advanced options (experts only):FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-prefix=${FF_CROSS_PREFIX}"FF_CFG_FLAGS="$FF_CFG_FLAGS -enable-cross-compile"# FF_CFG_FLAGS="$FF_CFG_FLAGS --sysroot=PATH"# FF_CFG_FLAGS="$FF_CFG_FLAGS --sysinclude=PATH"FF_CFG_FLAGS="$FF_CFG_FLAGS --target-os=$FF_TARGET_OS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --target-exec=CMD"# FF_CFG_FLAGS="$FF_CFG_FLAGS --target-path=DIR"# FF_CFG_FLAGS="$FF_CFG_FLAGS --toolchain=NAME"# FF_CFG_FLAGS="$FF_CFG_FLAGS --nm=NM"# FF_CFG_FLAGS="$FF_CFG_FLAGS --ar=AR"# FF_CFG_FLAGS="$FF_CFG_FLAGS --as=AS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --yasmexe=EXE"# FF_CFG_FLAGS="$FF_CFG_FLAGS --cc=CC"# FF_CFG_FLAGS="$FF_CFG_FLAGS --cxx=CXX"# FF_CFG_FLAGS="$FF_CFG_FLAGS --dep-cc=DEPCC"# FF_CFG_FLAGS="$FF_CFG_FLAGS --ld=LD"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-cc=HOSTCC"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-cflags=HCFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-cppflags=HCPPFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-ld=HOSTLD"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-ldflags=HLDFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-libs=HLIBS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --host-os=OS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --extra-cflags=ECFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --extra-cxxflags=ECFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --extra-ldflags=ELDFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --extra-libs=ELIBS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --extra-version=STRING"# FF_CFG_FLAGS="$FF_CFG_FLAGS --optflags=OPTFLAGS"# FF_CFG_FLAGS="$FF_CFG_FLAGS --build-suffix=SUFFIX"# FF_CFG_FLAGS="$FF_CFG_FLAGS --malloc-prefix=PREFIX"# FF_CFG_FLAGS="$FF_CFG_FLAGS --progs-suffix=SUFFIX"# FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=ARCH"# FF_CFG_FLAGS="$FF_CFG_FLAGS --cpu=CPU"FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-pic"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-sram"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-thumb"FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-symver"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-hardcoded-tables"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-safe-bitstream-reader"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-memalign-hack"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-lto"#Optimization options(experts only)FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-asm"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-altivec"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-amd3dnow"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-amd3dnowext"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mmx"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mmxext"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-sse"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-sse2"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-sse3"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ssse3"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-sse4"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-sse42"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-avx"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-fma4"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-armv5te"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-armv6"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-armv6t2"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-vfp"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-neon"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-vis"FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-inline-asm"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-yasm"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mips32r2"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mipsdspr1"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mipsdspr2"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-mipsfpu"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-fast-unaligned"# Developer options (useful when working on FFmpeg itself):# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-coverage"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-debug"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-debug=LEVEL"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-optimizations"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-extra-warnings"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-stripping"# FF_CFG_FLAGS="$FF_CFG_FLAGS --assert-level=level"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-memory-poisoning"# FF_CFG_FLAGS="$FF_CFG_FLAGS --valgrind=VALGRIND"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-ftrapv"# FF_CFG_FLAGS="$FF_CFG_FLAGS --samples=PATH"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-xmm-clobber-test"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-random"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-random"# FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-random=LIST"# FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-random=LIST"# FF_CFG_FLAGS="$FF_CFG_FLAGS --random-seed=VALUE"
五、编译ffmpeg:
FF_MAKEFLAGS=if which nproc >/dev/nullthen FF_MAKEFLAGS=-j`nproc`elif [ "$UNAMES" == "Darwin" ] && which sysctl >/dev/nullthen FF_MAKEFLAGS=-j`sysctl -n machdep.cpu.thread_count`fiif [ -f "./config.h" ]; then echo "\n resume configure \n"else ./configure $FF_CFG_FLAGS \ --extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS" \ --extra-ldflags="$FF_EXTRA_LDFLAGS" make cleanficp config.* $FF_PREFIXmake $FF_MAKEFLAGSmake install
六、如果一切正常,我们可以得到libavcodec.so,libavformat.so等开头的目录,我们需要将这些.o文件链接成一个.so动态库:
rm libavcodec/log2_tab.orm libavutil/log2_tab.orm libswresample/log2_tab.o$CC -lm -lz -shared --sysroot=$FF_SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $FF_EXTRA_LDFLAGS \ compat/*.o \ libavutil/*.o \ libavutil/arm/*.o \ libavcodec/*.o \ libavcodec/arm/*.o \ libavformat/*.o \ libswresample/*.o \ libswresample/arm/*.o \ libswscale/*.o \ -o $FF_PREFIX/libffmpeg.so
七、构建完成之后我们可以strip一下动态库,去掉一些无用的信息,这样可以降低动态链接库的体积:
arm-linux-androideabi-strip --strip-unneeded libffmpeg.so注:本文参考https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk编写。
- [原]如何用Android NDK编译FFmpeg
- 如何用Android NDK编译FFmpeg
- 如何用vs08编译ffmpeg
- android ndk 编译 ffmpeg
- Android NDK编译ffmpeg
- 如何用Android NDK编写可执行程序
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- 使用Android NDK编译ffmpeg
- android 用ndk编译ffmpeg
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- 用Android NDK编译FFmpeg
- android ndk 编译ffmpeg+x264
- 【Android】用NDK编译Ffmpeg
- 微信小程序--后端管理平台业务2--thymeleaf配置及迭代序号
- 函数式编程笔记(一)——粮草先行
- GetRowWithCellText
- js 访问的js文件不是应有的内容,而是其他的
- SSM系列3:SSM+easyUI+HTML5部分新特性
- [原]如何用Android NDK编译FFmpeg
- 用StretchBlt()来设置图片时,图片背景变黑色。
- PHP 数据库连接池实现
- wrapper log4j 中文乱码
- 要给嵌套sql的列例子
- 工厂模式
- Struts2下载文件时文件名乱码
- js及JQuery之event
- UMeditor使用