[原]Android NDKでFFmpegをコンパイルする方法

112880 ワード

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 filters



Standard 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 path



Licensing 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 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:

  --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 code



Hardware 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 filters



External 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 optimization



Advanced 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 slow



Developer 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-random



NOTE: Object files are built at the place where configure is launched.

これらのオプション、これらのオプションは私たちが設定する必要があります.一部のオプションはFFmpeg最適化オプションで、CPUに対して最適化することができます.また、コンパイルしなくても、コンパイルされたFFmpegダイナミックリンクライブラリの体積を減らすことができます.
三、NDKの設定:
    
export ANDROID_NDK=/path/to/your/android/ndk/root
export FF_BUILD_ROOT=`pwd`
export FF_BUILD_NAME=ffmpeg
export FF_ANDROID_PLATFORM=android-14
export FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchain
export FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot
export 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/output
FF_CROSS_PREFIX=arm-linux-androideabi PATH
=$FF_TOOLCHAIN_PATH/bin:$PATH CC="ccache ${FF_CROSS_PREFIX}-gcc" LD=${FF_CROSS_PREFIX}-ld AR=${FF_CROSS_PREFIX}-ar STRIP=${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設定を切り取ることができます.ここでは、2番目のステップの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 libs

FF_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 speed

FF_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 swscale

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-swsacle-alpha"



#Program options:

#do not build command line programs

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-programs"

#disable ffmpeg build

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffmpeg"

#disable ffplay build

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffplay"

#disable ffprobe build

FF_CFG_FLAGS="$FF_CFG_FLAGS --diable-ffprobe"

#disable ffserver build

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-ffserver"



#Documentation options:

#do not build documentation

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-doc"

#do not build HTML documentation pages

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-htmlpages"

#do not build man documentation pages

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-manmpages"

#do not build POD documentation pages

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-podpages"

#do not build text documentation pages

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-txtpages"



#Componet options:disable libpostproc build

#disable libavdevice build

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-avdevice"

#disable libavcodec build

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avcodec"

#disable libavformat build

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avformat"

#disable libavutil build

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-avutil"

#disable libswresample build

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-swresample"

#disable libswscale build

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-swscale"

#disable libpostproc build

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-postproc"

#disable libavfilter build

FF_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 code

FF_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 encoders

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-encoders"

#disable all decoders

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-decoders"

#disable decoder aac

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=aac"

#disable decoder aac_latm

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=aac_latm"

#disable decoder ac3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ac3"

#disable decoder ape

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ape"

#disable decoder flac

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=flac"

#disable decoder flv

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=flv"

#disable decoder h261

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h261"

#disable decoder h263

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263"

#disable decoder h263i

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263i"

#disable decoder h263p

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h263p"

#disable decoder h264

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=h264"

#disable decoder mp3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3"

#disable decoder mp3float

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3float"

#disable decoder mp3on4

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3on4"

#disable decoder mp3on4float

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mp3on4float"

#disable decoder mpeg4

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=mpeg4"

#disable decoder msmpeg4v1

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v1"

#disable decoder msmpeg4v2

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v2"

#disable decoder msmpeg4v3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=msmpeg4v3"

#disable decoder pcm_*

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=pcm_*"

#disable decoder ra_144

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ra_144"

#disable decoder ra_288

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ra_288"

#disable decoder ralf

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=ralf"

#disable decoder rv10

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv10"

#disable decoder rv20

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv20"

#disable decoder rv30

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv30"

#disable decoder rv40

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=rv40"

#disable decoder theora

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=theora"

#disable decoder vc1

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vc1"

#disable decoder vorbis

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vorbis"

#disable decoder vp3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp3"

#disable decoder vp5

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp5"

#disable decoder vp6

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6"

#disable decoder vp6a

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6a"

#disable decoder vp6f

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp6f"

#disable decoder vp8

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=vp8"

#disable decoder webp

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=webp"

#disable decoder wmalossless

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmalossless"

#disable decoder wmapro

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmapro"

#disable decoder wmav1

FF_CFG_FLAGS="$FF_CFG_FLAGS --eanble-decoder=wmav1"

#disable decoder wmav2

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmav2"

#disable decoder wmv1

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv1"

#disable decoder wmv2

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv2"

#disable decoder wmv3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-decoder=wmv3"



#disable all hwaccels

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-hwaccels"

#disable all muxers

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-muxers"

#disable all muxer mpegts

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-muxer=mpegts"



#disable all demuxers

FF_CFG_FLAGS="$FF_CFG_FLAGS --diable-demuxers"

#disable demuxer aac

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=aac"

#disable demuxer ac3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ac3"

#disable demuxer ape

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ape"

#disable demuxer asf

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=asf"

#disable demuxer concat

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=concat"

#disable demuxer data

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=data"

#disable demuxer flac

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=flac"

#disable demuxer flv

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=flv"

#disable demuxer h261

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h261"

#disable demuxer h263

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h263"

#disable demuxer h264

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=h264"

#disable demuxer hls

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=hls"

#disable demuxer latm

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=latm"

#disable demuxer loas

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=loas"

#disable demuxer m4v

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=m4v"

#disable demuxer matroska

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=matroska"

#disable demuxer mov

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mov"

#disable demuxer mp3

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mp3"

#disable demuxer mpegps

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegps"

#disable demuxer mpegts

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegts"

#disable demuxer mpegtsraw

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegtsraw"

#disable demuxer mpegvideo

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=mpegvideo"

#disable demuxer ogg

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=ogg"

#disable demuxer pcm_*

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=pcm_*"

#disable demuxer rm

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rm"

#disable demuxer rtp

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rtp"

#disable demuxer rtsp

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=rtsp"

#disable demuxer swf

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=swf"

#disable demuxer tta

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=tta"

#disable demuxer vc1

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=vc1"

#disable demuxer vc1t

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=vc1t"

#disable demuxer wav

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=wav"

#disable demuxer xmv

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-demuxer=xmv"

#disable demuxer xwma

FF_CFG_FLAGS="$FF_CFG_FLAGS --eanble-demuxer=xwma"



#disable all parsers

FF_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 adx

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=adx"

#disable parser bmp

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=bmp"

#disable parser cavsvideo

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=cavsvideo"

#disable parser cook

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=cook"

#disable parser dca

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dca"

#disable parser dirac

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dirac"

#disable parser dnxhd

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dnxhd"

#disable parser dvbsub

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvbsub"

#disable parser dvd_nav

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvd_nav"

#disable parser dvdsub

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=dvdsub"

#disable parser flac

#FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=flac"

#disable parser gsm

FF_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 mjpeg

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=mjpeg"

#disable parser mlp

FF_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 png

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=png"

#disable parser pnm

FF_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 vc1

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vc1"

#disable parser vorbis

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vorbis"

#disable parser vp3

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vp3"

#disable parser vp8

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-parser=vp8"



#disable all bsfs

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-bsfs"

#disable all protocols

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-protocols"

#disable all devices

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-devices"

#disable all filters

FF_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 fontconfig

FF_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 filtering

FF_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 libcaca

FF_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 libcdio

FF_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 code

FF_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/null

then

    FF_MAKEFLAGS=-j`nproc`

elif [ "$UNAMES" == "Darwin" ] && which sysctl >/dev/null

then

    FF_MAKEFLAGS=-j`sysctl -n machdep.cpu.thread_count`

fi



if [ -f "./config.h" ]; then

    echo "
resume configure
" else ./configure $FF_CFG_FLAGS \ --extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS" \ --extra-ldflags="$FF_EXTRA_LDFLAGS" make clean fi cp config.* $FF_PREFIX make $FF_MAKEFLAGS make install

 
六、すべてが正常であれば、libavcodecを得ることができます.so,libavformat.soなどの最初のディレクトリは、これらを必要とします.oファイルを1つにリンクする.soダイナミックライブラリ:
rm libavcodec/log2_tab.o

rm libavutil/log2_tab.o

rm 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を参照してください.