1. 安装编译环境

sudo apt-get install yasm

2. 下载源码

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

3. 配置选项

通过configure来配置需要编译的ffmpeg库

./configure xxx

3.1 armv7a库配置项

  • 配置项
./configure --target-os=android \    --prefix=$FF_BUILD_OUT      \    --enable-runtime-cpudetect  \    --disable-stripping         \    --disable-asm               \    --arch=arm                  \    --enable-cross-compile      \    --cc=$FF_PREBUILT/bin/arm-linux-androideabi-gcc         \    --cross-prefix=$FF_PREBUILT/bin/arm-linux-androideabi-  \    --nm=$FF_PREBUILT/bin/arm-linux-androideabi-nm          \    --sysroot=$FF_PLATFORM                                  \    --enable-gpl --enable-static --disable-shared --enable-nonfree --enable-version3 --enable-small         \    --enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug    \    --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"
  • 执行编译命令
makemake install

3.2 高级选项配置(可选CPU)

下面提供的脚本可以正常编译arm内核的,X86内核可以正常编译静态库,生成动态库时有问题
将以下三个脚本存放到build文件夹,并与ffmpeg源码同级目录放置
进入到build目录执行以下命令编译即可,加上debug将不会减小库的大小,并且会打开log记录,关闭优化等

build_ffmpeg.sh armv5|armv7a|arm64|x86|x86_64 debugbuild_ffmpeg.sh all32 debugbuild_ffmpeg.sh arm debugbuild_ffmpeg.sh all debugbuild_ffmpeg.sh clearbuild_ffmpeg.sh check

build_ffmpeg.sh,用于选择编译类型或者清除编译数据

#! /usr/bin/env bashFF_ARCH=$1FF_DEBUG=$2FF_BUILD_PATH=`pwd`FF_ACT_ARCHS_32="armv5 armv7a x86"FF_ACT_ARCHS_ARM="armv5 armv7a arm64"FF_ACT_ARCHS_64="armv5 armv7a arm64 x86 x86_64"FF_ACT_ARCHS_ALL=$FF_ACT_ARCHS_64echo_archs() {    echo "===================="    echo "[*] check archs"    echo "FF_ALL_ARCHS = $FF_ACT_ARCHS_ALL"    echo "FF_ACT_ARCHS = $*"    echo "===================="    echo ""}echo_usage() {    echo "Usage:"    echo "  build_ffmpeg.sh armv5|armv7a|arm64|x86|x86_64"    echo "  build_ffmpeg.sh all32"    echo "  build_ffmpeg.sh arm"    echo "  build_ffmpeg.sh all"    echo "  build_ffmpeg.sh clear"    echo "  build_ffmpeg.sh check"    echo ""}echo_exit() {    echo ""    echo "--------------------"    echo "[*] Finished"    echo "--------------------"}#----------case "$FF_ARCH" in    "")        echo_archs armv7a        sh $FF_BUILD_PATH/do_build_ffmpeg.sh armv7a        echo_exit    ;;    armv5|armv7a|arm64|x86|x86_64)        echo_archs $FF_ARCH $FF_DEBUG        sh $FF_BUILD_PATH/do_build_ffmpeg.sh $FF_ARCH $FF_DEBUG        echo_exit    ;;    arm)        echo_archs $FF_ACT_ARCHS_ARM        for ARCH in $FF_ACT_ARCHS_ARM        do            sh $FF_BUILD_PATH/do_build_ffmpeg.sh $ARCH $FF_DEBUG        done        echo_exit    ;;    all32)        echo_archs $FF_ACT_ARCHS_32        for ARCH in $FF_ACT_ARCHS_32        do            sh $FF_BUILD_PATH/do_build_ffmpeg.sh $ARCH $FF_DEBUG        done        echo_exit    ;;    all|all64)        echo_archs $FF_ACT_ARCHS_ALL        for ARCH in $FF_ACT_ARCHS_ALL        do            sh $FF_BUILD_PATH/do_build_ffmpeg.sh $ARCH $FF_DEBUG        done        echo_exit    ;;    clear)        echo_archs $FF_ACT_ARCHS_ALL        echo "clear build file/folder"        for ARCH in $FF_ACT_ARCHS_ALL        do            sh $FF_BUILD_PATH/do_build_ffmpeg.sh $ARCH clear        done        echo_exit    ;;    check)        echo_archs $FF_ACT_ARCHS_ALL    ;;    *)        echo_usage    ;;esac

do_build_ffmpeg.sh实际编译脚本

#!/user/bin/bashFF_ARCH=$1FF_DEBUG=$2FF_BUILD_PATH=`pwd`FF_OUT=$FF_BUILD_PATH/../outFF_SOURCE=$FF_BUILD_PATH/../ffmpegTMPDIR=$FF_OUTNDK=$ANDROID_NDKFF_PLATFORM=FF_PREBUILT=FF_BUILD_OUT=FF_LIBS_OUT=FF_INCLUDE_OUT=FF_CFLAGS="-O3 -Wall -pipe -std=c99 -ffast-math -fstrict-aliasing -Werror=strict-aliasing -Wno-psabi -Wa,--noexecstack -DANDROID -DNDEBUG"#FF_CFLAGS="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"FF_COMMON_FLAGS=FF_CONFIG=FF_EXTRA_CFLAGS=FF_EXTRA_LDFLAGS=FF_CONFIG=FF_TOOLCHAIN_NAME=FF_CROSS_PREFIX=FF_BUILD_NAME=FF_PLATFORM_SUB_DIRS=FF_GCC_32_VER=4.9FF_GCC_64_VER=4.9FF_GCC_VER=FF_ANDROID_PLATFORM=android-21if [ "$FF_ARCH" = "armv7a" ]; then    FF_BUILD_NAME="armeabi-v7a"    FF_CROSS_PREFIX=arm-linux-androideabi    FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_32_VER}    FF_CONFIG="$FF_CONFIG --arch=arm --cpu=cortex-a8"    FF_CONFIG="$FF_CONFIG --enable-neon"    FF_CONFIG="$FF_CONFIG --enable-thumb"    FF_EXTRA_CFLAGS="$FF_CFLAGS -march=armv7-a -mcpu=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb"    FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS -Wl,--fix-cortex-a8"    FF_PLATFORM_SUB_DIRS="arm"    FF_GCC_VER=$FF_GCC_32_VERelif [ "$FF_ARCH" = "arm64" ]; then    FF_ANDROID_PLATFORM=android-21    FF_BUILD_NAME="arm64-v8a"    FF_CROSS_PREFIX=aarch64-linux-android    FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}    FF_CONFIG="$FF_CONFIG --arch=aarch64 --enable-yasm"    FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"    FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"    FF_PLATFORM_SUB_DIRS="arm64"    FF_GCC_VER=$FF_GCC_64_VERelif [ "$FF_ARCH" = "armv5" ]; then    FF_BUILD_NAME="armeabi"    FF_CROSS_PREFIX=arm-linux-androideabi    FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_32_VER}    FF_CONFIG="$FF_CONFIG --arch=arm"    FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv5te -mtune=arm9tdmi -msoft-float"    FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"    FF_PLATFORM_SUB_DIRS="arm"    FF_GCC_VER=$FF_GCC_32_VERelif [ "$FF_ARCH" = "x86" ]; then    FF_BUILD_NAME="x86"    FF_CROSS_PREFIX=i686-linux-android    FF_TOOLCHAIN_NAME=x86-${FF_GCC_32_VER}    FF_CONFIG="$FF_CONFIG --arch=x86 --cpu=i686 --enable-x86asm"    FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=atom -msse3 -ffast-math -mfpmath=sse"    FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"    FF_PLATFORM_SUB_DIRS="x86"    FF_GCC_VER=$FF_GCC_32_VERelif [ "$FF_ARCH" = "x86_64" ]; then    FF_ANDROID_PLATFORM=android-21    FF_BUILD_NAME="x86_64"    FF_CROSS_PREFIX=x86_64-linux-android    FF_TOOLCHAIN_NAME=x86_64-${FF_GCC_64_VER}    FF_CONFIG="$FF_CONFIG --arch=x86_64 --enable-x86asm"    FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"    FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"    FF_PLATFORM_SUB_DIRS="x86_64"    FF_GCC_VER=$FF_GCC_64_VERelse    echo "unknown architecture $FF_ARCH";    exit 1fiFF_PLATFORM=$NDK/platforms/$FF_ANDROID_PLATFORM/arch-$FF_PLATFORM_SUB_DIRSFF_PREBUILT=$NDK/toolchains/$FF_TOOLCHAIN_NAME/prebuilt/linux-x86_64FF_BUILD_OUT=$FF_OUT/build/$FF_BUILD_NAMEFF_LIBS_OUT=$FF_OUT/libs/$FF_BUILD_NAMEFF_INCLUDE_OUT=$FF_OUT/include#FF_CONFIG="$FF_CONFIG --arch=arm"FF_CONFIG="$FF_CONFIG --target-os=android"FF_CONFIG="$FF_CONFIG --prefix=$FF_BUILD_OUT"FF_CONFIG="$FF_CONFIG --enable-runtime-cpudetect"FF_CONFIG="$FF_CONFIG --disable-stripping"FF_CONFIG="$FF_CONFIG --disable-asm"FF_CONFIG="$FF_CONFIG --enable-cross-compile"FF_CONFIG="$FF_CONFIG --cc=$FF_PREBUILT/bin/${FF_CROSS_PREFIX}-gcc"FF_CONFIG="$FF_CONFIG --nm=$FF_PREBUILT/bin/${FF_CROSS_PREFIX}-nm"FF_CONFIG="$FF_CONFIG --cross-prefix=$FF_PREBUILT/bin/${FF_CROSS_PREFIX}-"FF_CONFIG="$FF_CONFIG --sysroot=$FF_PLATFORM"FF_CONFIG="$FF_CONFIG --enable-static --disable-shared"FF_CONFIG="$FF_CONFIG --enable-gpl --enable-nonfree --enable-version3"FF_CONFIG="$FF_CONFIG --enable-zlib"FF_CONFIG="$FF_CONFIG --disable-debug"FF_CONFIG="$FF_CONFIG --incdir=$FF_INCLUDE_OUT"case "$FF_DEBUG" in    debug)        FF_CONFIG="$FF_CONFIG --disable-optimizations"        FF_CONFIG="$FF_CONFIG --enable-debug"        FF_CONFIG="$FF_CONFIG --disable-small"    ;;    *)        FF_CONFIG="$FF_CONFIG --enable-optimizations"        FF_CONFIG="$FF_CONFIG --disable-debug"        FF_CONFIG="$FF_CONFIG --enable-small"    ;;esac. $FF_BUILD_PATH/ff_common_config.sh#echo "------------------------"#echo "[*] Define build path"#echo "[*] FF_BUILD_PATH = $FF_BUILD_PATH"#echo "[*] TMPDIR        = $TMPDIR"#echo "[*] NDK           = $NDK"#echo "[*] FF_PLATFORM   = $FF_PLATFORM"#echo "[*] FF-PREBUILT   = $FF_PREBUILT"#echo "[*] FF_BUILD_OUT  = $FF_BUILD_OUT"#echo "[*] FF_LIBS_OUT   = $FF_LIBS_OUT"#echo "[*] FF_CONFIG:"#echo "$FF_CONFIG"#echo "[*] FF_COMMON_FLAGS:"#echo "$FF_COMMON_FLAGS"#echo "[*] FF_EXTRA_CFLAGS:"#echo "$FF_EXTRA_CFLAGS"#echo "[*] FF_EXTRA_LDFLAGS:"#echo "$FF_EXTRA_LDFLAGS"#echo "------------------------"create_folder(){    mkdir -p $TMPDIR    mkdir -p $FF_BUILD_OUT    mkdir -p $FF_LIBS_OUT}config(){    ./configure --target-os=android \        --prefix=$FF_BUILD_OUT      \        --enable-runtime-cpudetect  \        --disable-stripping         \        --disable-asm               \        --arch=arm                  \        --enable-cross-compile      \        --cc=$FF_PREBUILT/bin/arm-linux-androideabi-gcc         \        --cross-prefix=$FF_PREBUILT/bin/arm-linux-androideabi-  \        --nm=$FF_PREBUILT/bin/arm-linux-androideabi-nm          \        --sysroot=$FF_PLATFORM                                  \        --enable-gpl --enable-static --disable-shared --enable-nonfree --enable-version3 --enable-small         \        --enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug    \        --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"}config_1(){    ./configure $FF_CONFIG                          \                $FF_COMMON_FLAGS                    \                --extra-cflags="$FF_EXTRA_CFLAGS"   \                --extra-ldflags="$FF_EXTRA_LDFLAGS"}build_clear(){    rm -rf $FF_LIBS_OUT    rm -rf $FF_BUILD_OUT    rm -rf $FF_INCLUDE_OUT    make clean}build(){    make -j4    make install    cp -f config.h $FF_INCLUDE_OUT/config.h}compose(){    $FF_PREBUILT/bin/${FF_CROSS_PREFIX}-ld          \        -rpath-link=$FF_PLATFORM/usr/lib            \        -L$FF_PLATFORM/usr/lib -L$FF_BUILD_OUT/lib  \        -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \        $FF_LIBS_OUT/libffmpeg.so          \        $FF_BUILD_OUT/lib/libavcodec.a     \        $FF_BUILD_OUT/lib/libavfilter.a    \        $FF_BUILD_OUT/lib/libswresample.a  \        $FF_BUILD_OUT/lib/libavformat.a    \        $FF_BUILD_OUT/lib/libavutil.a      \        $FF_BUILD_OUT/lib/libswscale.a     \        $FF_BUILD_OUT/lib/libavdevice.a    \        $FF_BUILD_OUT/lib/libpostproc.a    \        -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \        $FF_PREBUILT/lib/gcc/${FF_CROSS_PREFIX}/${FF_GCC_VER}.x/libgcc.a    make clean}cd $FF_SOURCEcase "$FF_DEBUG" in    clear)        build_clear    ;;    *)        create_folder        config_1        build        compose    ;;esaccd $FF_BUILD_PATH

ff_common_config.sh 用于ffmpeg库编译选项

#! /usr/bin/env bashexport FF_COMMON_FLAGS=# Program options:export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-programs"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-ffmpeg"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-ffplay"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-ffprobe"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-ffserver"# Documentation options:export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-doc"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-htmlpages"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-manpages"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-podpages"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-txtpages"# Component options:export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-avdevice"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-avcodec"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-avformat"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-avutil"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-swresample"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-swscale"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-postproc"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-avfilter"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-avresample"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-network"# Hardware accelerators:export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-d3d11va"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-dxva2"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-vaapi"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-vda"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-vdpau"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-videotoolbox"# Individual component options:export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-encoders"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-encoder=png"# ./configure --list-decodersexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-decoders"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=aac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=aac_latm"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=flv"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=h264"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=mp3*"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=vp6f"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=flac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-decoder=hevc"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-hwaccels"# ./configure --list-muxersexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-muxers"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-muxer=mp4"# ./configure --list-demuxersexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-demuxers"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=aac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=concat"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=data"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=flv"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=hls"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=live_flv"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=mov"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=mp3"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=mpegps"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=mpegts"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=mpegvideo"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=flac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-demuxer=hevc"# ./configure --list-parsersexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-parsers"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-parser=aac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-parser=aac_latm"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-parser=h264"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-parser=flac"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-parser=hevc"# ./configure --list-bsfexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-bsfs"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=chomp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=dca_core"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=dump_extradata"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=hevc_mp4toannexb"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=imx_dump_header"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=mjpeg2jpeg"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=mjpega_dump_header"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=mov2textsub"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=mp3_header_decompress"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=mpeg4_unpack_bframes"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=noise"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=remove_extradata"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=text2movsub"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-bsf=vp9_superframe"# ./configure --list-protocolsexport FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-protocols"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-protocol=async"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=bluray"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=concat"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=crypto"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=ffrtmpcrypt"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-protocol=ffrtmphttp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=gopher"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=icecast"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=librtmp*"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=libssh"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=md5"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=mmsh"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=mmst"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=rtmp*"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-protocol=rtmp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --enable-protocol=rtmpt"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=rtp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=sctp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=srtp"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=subfile"export FF_COMMON_FLAGS="$FF_COMMON_FLAGS --disable-protocol=unix"

4. 配置项说明

所有配置项都可通过下面命令查看

./configure --help

转自:https://www.cnblogs.com/soniclq/p/3417833.html
Usage: configure [options]
用 法:configure [选项]
Options: [defaults in brackets after descriptions]
选 项:[描述之后的方括号里的是默认值]

Standard options:
标准选项:
--help print this message
打印这个信息,例如:./configure --help > ffmpegcfg.txt
--logfile=FILE log tests and output to FILE [config.log]
记录测试日志并输出到的文件[默认:config.log]
--disable-logging do not log configure debug information
不记录调试日志信息
--prefix=PREFIX install in PREFIX []
安装程序到指定目录[默认:空]
--bindir=DIR install binaries in DIR [PREFIX/bin]
安装程序到指定目录[默认:/bin]
--datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
安装数据文件到指定目录[默认:/share/ffmpeg]
--libdir=DIR install libs in DIR [PREFIX/lib]
安装静态库到指定目录[默认:/lib]
--shlibdir=DIR install shared libs in DIR [PREFIX/lib]
安装共享库到指定目录[默认:/lib]
--incdir=DIR install includes in DIR [PREFIX/include]
安装头文件到指定目录[默认:/include]
--mandir=DIR install man page in DIR [PREFIX/share/man]
安装man page到指定路径[默认:/share/man]

Configuration options:
配置选项:
--disable-static do not build static libraries [no]
不构建静态库[默认:关闭]
--enable-shared build shared libraries [no]
构建共享库[默认:关闭]
--enable-gpl allow use of GPL code, the resulting libs
and binaries will be under GPL [no]
允许使用 GPL 代码,
产生的库和程序将隶属于 GPL[默认:关闭]
--enable-version3 upgrade (L)GPL to version 3 [no]
升级GPL到版本3[默认:关闭]
--enable-nonfree allow use of nonfree code, the resulting libs
and binaries will be unredistributable [no]
允许使用非免费的代码,
产生的库和二进制程序将是不可再发行的[默认:关闭]
--disable-doc do not build documentation
不构造文档
--disable-ffmpeg disable ffmpeg build
禁止 ffmpeg 构造
--disable-ffplay disable ffplay build
禁止 ffplay 构造
--disable-ffprobe disable ffprobe build
禁止 ffprobe 构造
--disable-ffserver disable ffserver build
禁止 ffserver 构造
--disable-avdevice disable libavdevice build
禁止 libavdevice 构造
--disable-avcodec disable libavcodec build
禁止 libavcodec 构造
--disable-avcore disable libavcore build
禁止 libavcore 构造
--disable-avformat disable libavformat build
禁止 libavformat 构造
--disable-swscale disable libswscale build
禁止 libswscale 构造
--enable-postproc enable GPLed postprocessing support [no]
启用 GPLed 后加工支持[默认:关闭]
--disable-avfilter disable video filter support [no]
禁止视频过滤器支持[默认:关闭]
--disable-pthreads disable pthreads [auto]
禁用 pthreads [默认:自动]
--enable-w32threads use Win32 threads [no]
使用 Win32 线程[默认:关闭]
--enable-x11grab enable X11 grabbing [no]
启用 X11 攫取[默认:关闭]
--disable-network disable network support [no]
禁用网络支持[默认:不禁用]
--disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]
快速的 MPEG 音频解码方式(但精度低)[默认:禁用]
--enable-gray enable full grayscale support (slower color)
启用全部灰度的支持(感光性较低的颜色)
--disable-swscale-alpha disable alpha channel support in swscale
在软缩放时 禁止 阿尔法 通道支持
--disable-fastdiv disable table-based division
禁止以表格为主划分
--enable-small optimize for size instead of speed
启用大小优化,牺牲速度
--disable-aandct disable AAN DCT code
禁止 AAN DCT 码
--disable-dct disable DCT code
禁止 DCT 码
--disable-fft disable FFT code
禁止 FFT 码
--disable-golomb disable Golomb code
禁止 Golomb 码
--disable-huffman disable Huffman code
禁止 Huffman 码

--disable-lpc disable LPC code
禁止 LPC 码
--disable-mdct disable MDCT code
禁止 MDCT 码
--disable-rdft disable RDFT code
禁止 RDFT 码
--disable-vaapi disable VAAPI code
禁止 VAAPI 码
--disable-vdpau disable VDPAU code
禁止 VDPAU 码
--disable-dxva2 disable DXVA2 code
禁止 DXVA2 码
--enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
启用在运行时侦测 CPU 性能(更大的二进制程序)
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
启用硬编码表而不是运行时产生
--enable-memalign-hack emulate memalign, interferes with memory debuggers
模拟memalign,内存调试器干扰
--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
禁用全部协议
--disable-indev=NAME disable input device NAME
禁用指定的输入设备
--disable-outdev=NAME disable output device NAME
禁用指定的输出设备
--disable-indevs disable input devices
禁用输入设备
--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
禁用全部的过滤器
--list-decoders show all available decoders
显示全部可用的解码器
--list-encoders show all available encoders
显示全部可用的编码器
--list-hwaccels show all available hardware accelerators
显示全部可用的硬件加速器
--list-muxers show all available muxers
显示全部可用的混合器
--list-demuxers show all available demuxers
显示全部可用的解混器
--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
显示全部可用的过滤器

External library support:
外部库支持:
--enable-avisynth enable reading of AVISynth script files [no]
启用读取 AVISynth 脚本文件[默认:关闭]
--enable-bzlib enable bzlib [autodetect]
启用 bzlib[默认:自动侦测]
--enable-frei0r enable frei0r video filtering
启用 frei0r 视频筛选
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
启用 AMR-NB 编解码通过 libopencore-amrnb[默认:关闭]
1. AMR: Adaptive Multi-Rate 相对相对WB而言又称 AMR-NB,
自适应多速率编码,主要用于移动设备的音频,
压缩比比较大,但相对其他的压缩格式质量比较差,
由于多用于人声,通话,效果还是很不错的。
语音带宽范围:300-3400Hz,8KHz抽样;
2. AMR-WB: AMR WideBand,
是一种同时被国际标准化组织ITU-T和3GPP采用的宽带
语音编码标准,也称为G722.2标准。
语音带宽范围: 50-7000Hz,16KHz抽样
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
启用 AMR-WB 编解码通过 libopencore-amrwb[默认:关闭]
--enable-libopencv enable video filtering via libopencv [no]
通过 libopencv启用视频筛选 [默认:关闭]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
启用 libdc1394、libraw1394 抓取 IIDC-1394[默认:关闭]
--enable-libdirac enable Dirac support via libdirac [no]
--enable-libfaac enable FAAC support via libfaac [no]
通过 libfaac 启用 FAAC 支持[默认:关闭]
--enable-libgsm enable GSM support via libgsm [no]
通过 libgsm 启用 GSM 支持[默认:关闭]
--enable-libmp3lame enable MP3 encoding via libmp3lame [no]
通过 libmp3lame 启用 MP3 编码[默认:关闭]
--enable-libnut enable NUT (de)muxing via libnut,
native (de)muxer exists [no]
启用 NUT (解)混合通过 libnut,
本地的 (解)混合器存在[默认:关闭]
注:NUT是一种容器格式。
--enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]
通过 OpenJPEG启用 JPEG2000 解码 [默认:关闭]
--enable-librtmp enable RTMP[E] support via librtmp [no]
通过 librtmp 启用 RTMP[E]支持 [默认:关闭]
--enable-libschroedinger enable Dirac support via libschroedinger [no]
通过 libschroedinger启用 Dirac 支持 [默认:关闭]
--enable-libspeex enable Speex decoding via libspeex [no]
通过 libspeex启用 Speex 解码[默认:关闭]
--enable-libtheora enable Theora encoding via libtheora [no]
通过 libtheora启用 Theora 编码[默认:关闭]
--enable-libvorbis enable Vorbis encoding via libvorbis,
native implementation exists [no]
通过 libvorbis 启用 Vorbis 编码方式,本地装置存在[默认:关闭]
--enable-libvpx enable VP8 support via libvpx [no]
--enable-libx264 enable H.264 encoding via x264 [no]
通过 x264 启用 H.264 编码方式[默认:关闭]
--enable-libxavs enable AVS encoding via xavs [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
通过 xvidcore 启用 Xvid 编码方式,
本地 MPEG-4/Xvid 编码器存在[默认:关闭]
--enable-mlib enable Sun medialib [no]
启用 Sun medialib [默认:关闭]
--enable-zlib enable zlib [autodetect]
启用 zlib [默认:自动侦测]

Advanced options (experts only):
--source-path=PATH path to source code [/home/nsc/workspace/android_code/ffmpeg]
源码的路径[默认:/home/nsc/workspace/android_code/ffmpeg]
--cross-prefix=PREFIX use PREFIX for compilation tools []
为编译工具指定路径
--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
在目标系统上创建计划目录的路径
--nm=NM use nm tool
使用指定的 nm 工具。注:列出目标文件的符号清单。
--ar=AR use archive tool AR [ar]
使用指定的归档成静态库工具[默认:ar]
注:可以用来创建、修改库,也可以从库中提出单个模块。
--as=AS use assembler AS []
使用指定的汇编程序[默认:]
--cc=CC use C compiler CC [gcc]
指定使用哪种C编译器[默认:gcc]
--ld=LD use linker LD
使用指定的链接器
--host-cc=HOSTCC use host C compiler HOSTCC
使用主机C编译器HOSTCC
--host-cflags=HCFLAGS use HCFLAGS when compiling for host
宿主编译时,使用HCFLAGS
--host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
宿主连接时,使用HLDFLAGS
--host-libs=HLIBS use libs HLIBS when linking for host
宿主连接时,使用HLIBS库
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS []
添加 ECFLAGS 到 CFLAGS[默认:空]
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS []
添加 ELDFLAGS 到 LDFLAGS [默认:空]
--extra-libs=ELIBS add ELIBS []
添加 ELIBS [默认:空]
--extra-version=STRING version string suffix []
--build-suffix=SUFFIX library name suffix []
库名后缀[默认:空]
--arch=ARCH select architecture []
选择微处理器体系结构[默认:空]
--cpu=CPU select the minimum required CPU
(affects instruction selection,
may crash on older CPUs)
选用要求的最低CPU(影响指令选择,可能在过时的CPU上崩溃)
--disable-asm disable all assembler optimizations
禁用全部汇编程序优化
--disable-altivec disable AltiVec optimizations
禁用 AltiVec 优化
--disable-amd3dnow disable 3DNow! optimizations
禁用 3DNow! 优化
--disable-amd3dnowext disable 3DNow! extended optimizations
禁用 3DNow! 扩展优化
--disable-mmx disable MMX optimizations
禁用 MMX 优化
--disable-mmx2 disable MMX2 optimizations
禁用 MMX2 优化
--disable-sse disable SSE optimizations
禁用 SSE 优化
--disable-ssse3 disable SSSE3 optimizations
禁用 SSSE3 优化
--disable-armv5te disable armv5te optimizations
禁用 armv5te 优化
--disable-armv6 disable armv6 optimizations
禁用 armv6 优化
--disable-armv6t2 disable armv6t2 optimizations
禁用 armv6t2 优化
--disable-armvfp disable ARM VFP optimizations
禁用 ARM VFP 优化
--disable-iwmmxt disable iwmmxt optimizations
禁用 iwmmxt 优化
--disable-mmi disable MMI optimizations
禁用 MMI 优化
--disable-neon disable neon optimizations
禁用 neon 优化
--disable-vis disable VIS optimizations
禁用 VIS 优化
--disable-yasm disable use of yasm assembler
禁用 yasm 汇编器
--enable-pic build position-independent code
创造不依赖(于)位置的代码
--malloc-prefix=PFX prefix malloc and related names with PFX
在 malloc 和 相关名称 前加指定前缀
--enable-sram allow use of on-chip SRAM
允许使用片内静态随机存储器
--disable-symver disable symbol versioning
禁用符号版本控制

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
禁止可执行程序剥脱共享库
--samples=PATH location of test samples for FATE
指定测试示例的位置
NOTE: Object files are built at the place where configure is launched.
注意:对象文件是被创建在 configure 运行的地方。

更多相关文章

  1. xposed框架的检测和反制
  2. Android(安卓)9.0 添加 SD 卡写权限
  3. Android(安卓)Neon
  4. 使用百度地图SDK 这是之前版本 现在的sdk v2-1-2使用方法完全改
  5. android studio proguard 混淆微信libammsdk.jar报错
  6. Android: 向最强看齐, 反编译 植物大战僵尸.apk
  7. Android如何设置圆角按钮 类似微信的登陆按钮
  8. 深入剖析ndk配置环境VS简易配置jni流程
  9. Android内存使用研究

随机推荐

  1. Android中简单实现选择图片并裁剪
  2. Android传奇
  3. 安卓课程六 android常用布局属性的介绍
  4. Android高手进阶教程(六)之----Android
  5. Android 新浪授权和分享经验总结
  6. android DataStorage
  7. 【 Android 10 四大组件 】系列 -- Activ
  8. android横竖屏切换、键盘推出状态改变的
  9. Android Unparsed aapt error(s)! Check
  10. javaweb项目Error:Android Source Genera