实测好使, ffmpeg x264 编码器包含,编译了好久, 一直编译不进去,现用
ff3.3–ijk0.8.0–20170518–001 版本的ffmpeg和x264-snapshot-20151028-2245 版本的x264编译成功
转载如下, 非常感谢该作者,帮助非常大,留以备用
#! /usr/bin/env bash
Copyright © 2013-2015 Zhang Rui bbcallen@gmail.com
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
IJK_x264_UPSTREAM=http://git.videolan.org/git/x264.git
IJK_x264_FORK=http://git.videolan.org/git/x264.git
IJK_x264_LOCAL_REPO=extra/x264
set -e
TOOLS=tools
echo “== pull x264 base ==”
sh $TOOLS/pull-repo-base.sh $IJK_x264_UPSTREAM $IJK_x264_LOCAL_REPO
function pull_fork()
{
echo “== pull x264 fork $1 ==”
sh $TOOLS/pull-repo-ref.sh $IJK_x264_FORK android/contrib/x264-$1 ${IJK_x264_LOCAL_REPO}
}
pull_fork “armv5”
pull_fork “armv7a”
pull_fork “arm64”
pull_fork “x86”
pull_fork “x86_64”
这步执行完后,会在extra下面有个x264, 下面有源码
并且在android/contrib下面会有x264-armv7a等五个文件夹,如下
x264.png
在android/contrib下新建compile-x264.sh 和 tools/do-compile-x264.sh
compile-x264.sh
#! /usr/bin/env bash
Copyright © 2013-2014 Zhang Rui bbcallen@gmail.com
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#----------
UNI_BUILD_ROOT=pwd
FF_TARGET=$1
set -e
set +x
FF_ACT_ARCHS_32=“armv5 armv7a x86”
FF_ACT_ARCHS_64=“armv5 armv7a arm64 x86 x86_64”
FF_ACT_ARCHS_ALL=$FF_ACT_ARCHS_64
echo_archs() {
echo “"
echo “[*] check archs”
echo "”
echo “FF_ALL_ARCHS = $FF_ACT_ARCHS_ALL”
echo “FF_ACT_ARCHS = $*”
echo “”
}
echo_usage() {
echo “Usage:”
echo " compile-x264.sh armv5|armv7a|arm64|x86|x86_64"
echo " compile-x264.sh all|all32"
echo " compile-x264.sh all64"
echo " compile-x264.sh clean"
echo " compile-x264.sh check"
exit 1
}
echo_nextstep_help() {
#----------
echo “”
echo “--------------------”
echo “[*] Finished”
echo “--------------------”
echo “# to continue to build ffmpeg, run script below,”
echo "sh compile-ffmpeg.sh "
echo “# to continue to build ijkplayer, run script below,”
echo "sh compile-ijk.sh "
}
#----------
case “$FF_TARGET” in
“”)
echo_archs armv7a
sh tools/do-compile-x264.sh armv7a
;;
armv5|armv7a|arm64|x86|x86_64)
echo_archs $FF_TARGET
sh tools/do-compile-x264.sh $FF_TARGET
echo_nextstep_help
;;
all32)
echo_archs $FF_ACT_ARCHS_32
for ARCH in $FF_ACT_ARCHS_32
do
sh tools/do-compile-x264.sh $ARCH
done
echo_nextstep_help
;;
all|all64)
echo_archs $FF_ACT_ARCHS_64
for ARCH in $FF_ACT_ARCHS_64
do
sh tools/do-compile-x264.sh $ARCH
done
echo_nextstep_help
;;
clean)
echo_archs FF_ACT_ARCHS_64
for ARCH in
F
F
A
C
T
A
R
C
H
S
A
L
L
d
o
i
f
[
−
d
x
264
−
FF_ACT_ARCHS_ALL do if [ -d x264-
FFACTARCHSALLdoif[−dx264−ARCH ]; then
cd x264-$ARCH && git clean -xdf && cd -
fi
done
rm -rf ./build/x264-*
;;
check)
echo_archs FF_ACT_ARCHS_ALL
;;
*)
echo_usage
exit 1
;;
esac
do-compile-x264.sh
#! /usr/bin/env bash
Copyright © 2014 Miguel Bot髇 waninkoko@gmail.com
Copyright © 2014 Zhang Rui bbcallen@gmail.com
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#--------------------
set -e
if [ -z “$ANDROID_NDK” ]; then
echo “You must define ANDROID_NDK before starting.”
echo “They must point to your NDK directories.\n”
exit 1
fi
#--------------------
common defines
FF_ARCH=
1
i
f
[
−
z
"
1 if [ -z "
1if[−z"FF_ARCH" ]; then
echo “You must specific an architecture ‘arm, armv7a, x86, …’.\n”
exit 1
fi
FF_BUILD_ROOT=pwd
FF_ANDROID_PLATFORM=android-9
FF_BUILD_NAME=
FF_SOURCE=
FF_CROSS_PREFIX=
FF_CFG_FLAGS=
FF_PLATFORM_CFG_FLAGS=
FF_EXTRA_CFLAGS=
FF_EXTRA_LDFLAGS=
#--------------------
echo “”
echo “--------------------”
echo “[*] make NDK standalone toolchain”
echo “--------------------”
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=
I
J
K
M
A
K
E
T
O
O
L
C
H
A
I
N
F
L
A
G
S
F
F
M
A
K
E
F
L
A
G
S
=
IJK_MAKE_TOOLCHAIN_FLAGS FF_MAKE_FLAGS=
IJKMAKETOOLCHAINFLAGSFFMAKEFLAGS=IJK_MAKE_FLAG
FF_GCC_VER=
I
J
K
G
C
C
V
E
R
F
F
G
C
C
6
4
V
E
R
=
IJK_GCC_VER FF_GCC_64_VER=
IJKGCCVERFFGCC64VER=IJK_GCC_64_VER
#----- armv7a begin -----
if [ "
F
F
A
R
C
H
"
=
"
a
r
m
v
7
a
"
]
;
t
h
e
n
e
c
h
o
"
g
d
e
b
u
g
x
264
−
a
r
m
v
7
a
.
.
.
.
.
.
.
.
.
.
.
.
.
.
"
F
F
B
U
I
L
D
N
A
M
E
=
x
264
−
a
r
m
v
7
a
F
F
S
O
U
R
C
E
=
FF_ARCH" = "armv7a" ]; then echo "gdebug x264-armv7a.............." FF_BUILD_NAME=x264-armv7a FF_SOURCE=
FFARCH"="armv7a"];thenecho"gdebugx264−armv7a.............."FFBUILDNAME=x264−armv7aFFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-armv7"
elif [ " F F A R C H " = " a r m v 5 " ] ; t h e n F F B U I L D N A M E = x 264 − a r m v 5 F F S O U R C E = FF_ARCH" = "armv5" ]; then FF_BUILD_NAME=x264-armv5 FF_SOURCE= FFARCH"="armv5"];thenFFBUILDNAME=x264−armv5FFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android"
elif [ " F F A R C H " = " x 86 " ] ; t h e n F F B U I L D N A M E = x 264 − x 86 F F S O U R C E = FF_ARCH" = "x86" ]; then FF_BUILD_NAME=x264-x86 FF_SOURCE= FFARCH"="x86"];thenFFBUILDNAME=x264−x86FFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=i686-linux-android
FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}
FF_PLATFORM_CFG_FLAGS="android-x86"
elif [ “$FF_ARCH” = “x86_64” ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=x264-x86_64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=x86_64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-x86_64"
elif [ “$FF_ARCH” = “arm64” ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=x264-arm64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=aarch64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_PLATFORM_CFG_FLAGS="linux-aarch64"
else
echo “unknown architecture $FF_ARCH”;
exit 1
fi
FF_TOOLCHAIN_PATH= F F B U I L D R O O T / b u i l d / FF_BUILD_ROOT/build/ FFBUILDROOT/build/FF_BUILD_NAME/toolchain
FF_SYSROOT= F F T O O L C H A I N P A T H / s y s r o o t F F P R E F I X = FF_TOOLCHAIN_PATH/sysroot FF_PREFIX= FFTOOLCHAINPATH/sysrootFFPREFIX=FF_BUILD_ROOT/build/$FF_BUILD_NAME/output
mkdir -p $FF_PREFIX
mkdir -p $FF_SYSROOT
#--------------------
echo “”
echo “--------------------”
echo “[*] make NDK standalone toolchain”
echo “--------------------”
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=
I
J
K
M
A
K
E
T
O
O
L
C
H
A
I
N
F
L
A
G
S
F
F
M
A
K
E
F
L
A
G
S
=
IJK_MAKE_TOOLCHAIN_FLAGS FF_MAKE_FLAGS=
IJKMAKETOOLCHAINFLAGSFFMAKEFLAGS=IJK_MAKE_FLAG
FF_MAKE_TOOLCHAIN_FLAGS=“
F
F
M
A
K
E
T
O
O
L
C
H
A
I
N
F
L
A
G
S
−
−
i
n
s
t
a
l
l
−
d
i
r
=
FF_MAKE_TOOLCHAIN_FLAGS --install-dir=
FFMAKETOOLCHAINFLAGS−−install−dir=FF_TOOLCHAIN_PATH”
FF_TOOLCHAIN_TOUCH=“
F
F
T
O
O
L
C
H
A
I
N
P
A
T
H
/
t
o
u
c
h
"
i
f
[
!
−
f
"
FF_TOOLCHAIN_PATH/touch" if [ ! -f "
FFTOOLCHAINPATH/touch"if[!−f"FF_TOOLCHAIN_TOUCH” ]; then
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh
KaTeX parse error: Expected 'EOF', got '\ ' at position 25: …OOLCHAIN_FLAGS \̲ ̲ --platf…FF_ANDROID_PLATFORM
–toolchain=$FF_TOOLCHAIN_NAME
touch $FF_TOOLCHAIN_TOUCH;
fi
#--------------------
echo “”
echo “--------------------”
echo “[*] check x264 env”
echo “--------------------”
export PATH=
F
F
T
O
O
L
C
H
A
I
N
P
A
T
H
/
b
i
n
:
FF_TOOLCHAIN_PATH/bin:
FFTOOLCHAINPATH/bin:PATH
export COMMON_FF_CFG_FLAGS=
FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"
#--------------------
Standard options:
echo “FF_PREFIX =
F
F
P
R
E
F
I
X
"
F
F
C
F
G
F
L
A
G
S
=
"
FF_PREFIX" FF_CFG_FLAGS="
FFPREFIX"FFCFGFLAGS="FF_CFG_FLAGS --prefix=
F
F
P
R
E
F
I
X
"
F
F
C
F
G
F
L
A
G
S
=
"
FF_PREFIX" FF_CFG_FLAGS="
FFPREFIX"FFCFGFLAGS="FF_CFG_FLAGS --enable-static --disable-shared”
FF_CFG_FLAGS=“KaTeX parse error: Expected 'EOF', got '#' at position 71: …--disable-cli" #̲FF_CFG_FLAGS="FF_CFG_FLAGS --cross-prefix=
T
O
O
L
C
H
A
I
N
/
b
i
n
/
a
r
m
−
l
i
n
u
x
−
a
n
d
r
o
i
d
e
a
b
i
−
"
F
F
C
F
G
F
L
A
G
S
=
"
TOOLCHAIN/bin/arm-linux-androideabi-" FF_CFG_FLAGS="
TOOLCHAIN/bin/arm−linux−androideabi−"FFCFGFLAGS="FF_CFG_FLAGS --cross-prefix=
F
F
C
R
O
S
S
P
R
E
F
I
X
−
"
F
F
C
F
G
F
L
A
G
S
=
"
{FF_CROSS_PREFIX}-" FF_CFG_FLAGS="
FFCROSSPREFIX−"FFCFGFLAGS="FF_CFG_FLAGS --host=arm-linux”
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
s
y
s
r
o
o
t
=
FF_CFG_FLAGS --sysroot=
FFCFGFLAGS−−sysroot=FF_SYSROOT”
#FF_CFG_FLAGS="
F
F
C
F
G
F
L
A
G
S
−
−
c
r
o
s
s
−
p
r
e
f
i
x
=
FF_CFG_FLAGS --cross-prefix=
FFCFGFLAGS−−cross−prefix={FF_CROSS_PREFIX}-"
#FF_CFG_FLAGS="$FF_CFG_FLAGS $FF_PLATFORM_CFG_FLAGS"
#--------------------
echo “”
echo “--------------------”
echo “[*] configurate x264”
echo “--------------------”
cd $FF_SOURCE && chmod +w configure
#if [ -f “./Makefile” ]; then
echo ‘reuse configure’
#else
echo “./configure $FF_CFG_FLAGS”
./configure $FF_CFG_FLAGS
–extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS" \
–extra-ldflags="$FF_EXTRA_LDFLAGS"
#fi
#--------------------
echo “”
echo “--------------------”
echo “[*] compile x264”
echo “--------------------”
make depend
echo “make $FF_MAKE_FLAGS”
make $FF_MAKE_FLAGS
make install
#--------------------
echo “”
echo “--------------------”
echo “[*] link x264”
echo “--------------------”
输出如下:
x264-2.png
这部完成后,去build下的output看下x264.a和x264.so是否生成
#! /usr/bin/env bash
Copyright © 2013-2014 Zhang Rui bbcallen@gmail.com
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This script is based on projects below
https://github.com/yixia/FFmpeg-Android
http://git.videolan.org/?p=vlc-ports/android.git;a=summary
#--------------------
echo “"
echo “[*] check env $1”
echo "”
set -e
#--------------------
common defines
FF_ARCH=$1
FF_BUILD_OPT=
2
e
c
h
o
"
F
F
A
R
C
H
=
2 echo "FF_ARCH=
2echo"FFARCH=FF_ARCH"
echo “FF_BUILD_OPT=
F
F
B
U
I
L
D
O
P
T
"
i
f
[
−
z
"
FF_BUILD_OPT" if [ -z "
FFBUILDOPT"if[−z"FF_ARCH” ]; then
echo “You must specific an architecture ‘arm, armv7a, x86, …’.”
echo “”
exit 1
fi
FF_BUILD_ROOT=pwd
FF_ANDROID_PLATFORM=android-9
FF_BUILD_NAME=
FF_SOURCE=
FF_CROSS_PREFIX=
FF_DEP_OPENSSL_INC=
FF_DEP_OPENSSL_LIB=
FF_DEP_X264_INC=
FF_DEP_X264_LIB=
FF_DEP_LIBSOXR_INC=
FF_DEP_LIBSOXR_LIB=
FF_CFG_FLAGS=
FF_EXTRA_CFLAGS=
FF_EXTRA_LDFLAGS=
FF_DEP_LIBS=
FF_MODULE_DIRS=“compat libavcodec libavfilter libavformat libavutil libswresample libswscale”
FF_ASSEMBLER_SUB_DIRS=
#--------------------
echo “”
echo “--------------------”
echo “[*] make NDK standalone toolchain”
echo “--------------------”
. ./tools/do-detect-env.sh
FF_MAKE_TOOLCHAIN_FLAGS=
I
J
K
M
A
K
E
T
O
O
L
C
H
A
I
N
F
L
A
G
S
F
F
M
A
K
E
F
L
A
G
S
=
IJK_MAKE_TOOLCHAIN_FLAGS FF_MAKE_FLAGS=
IJKMAKETOOLCHAINFLAGSFFMAKEFLAGS=IJK_MAKE_FLAG
FF_GCC_VER=
I
J
K
G
C
C
V
E
R
F
F
G
C
C
6
4
V
E
R
=
IJK_GCC_VER FF_GCC_64_VER=
IJKGCCVERFFGCC64VER=IJK_GCC_64_VER
#----- armv7a begin -----
if [ "
F
F
A
R
C
H
"
=
"
a
r
m
v
7
a
"
]
;
t
h
e
n
F
F
B
U
I
L
D
N
A
M
E
=
f
f
m
p
e
g
−
a
r
m
v
7
a
F
F
B
U
I
L
D
N
A
M
E
O
P
E
N
S
S
L
=
o
p
e
n
s
s
l
−
a
r
m
v
7
a
F
F
B
U
I
L
D
N
A
M
E
X
264
=
x
264
−
a
r
m
v
7
a
F
F
B
U
I
L
D
N
A
M
E
L
I
B
S
O
X
R
=
l
i
b
s
o
x
r
−
a
r
m
v
7
a
F
F
S
O
U
R
C
E
=
FF_ARCH" = "armv7a" ]; then FF_BUILD_NAME=ffmpeg-armv7a FF_BUILD_NAME_OPENSSL=openssl-armv7a FF_BUILD_NAME_X264=x264-armv7a FF_BUILD_NAME_LIBSOXR=libsoxr-armv7a FF_SOURCE=
FFARCH"="armv7a"];thenFFBUILDNAME=ffmpeg−armv7aFFBUILDNAMEOPENSSL=openssl−armv7aFFBUILDNAMEX264=x264−armv7aFFBUILDNAMELIBSOXR=libsoxr−armv7aFFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm --cpu=cortex-a8"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-neon"
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"
FF_ASSEMBLER_SUB_DIRS="arm"
elif [ " F F A R C H " = " a r m v 5 " ] ; t h e n F F B U I L D N A M E = f f m p e g − a r m v 5 F F B U I L D N A M E O P E N S S L = o p e n s s l − a r m v 5 F F B U I L D N A M E X 264 = x 264 − a r m v 5 F F B U I L D N A M E L I B S O X R = l i b s o x r − a r m v 5 F F S O U R C E = FF_ARCH" = "armv5" ]; then FF_BUILD_NAME=ffmpeg-armv5 FF_BUILD_NAME_OPENSSL=openssl-armv5 FF_BUILD_NAME_X264=x264-armv5 FF_BUILD_NAME_LIBSOXR=libsoxr-armv5 FF_SOURCE= FFARCH"="armv5"];thenFFBUILDNAME=ffmpeg−armv5FFBUILDNAMEOPENSSL=openssl−armv5FFBUILDNAMEX264=x264−armv5FFBUILDNAMELIBSOXR=libsoxr−armv5FFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=arm-linux-androideabi
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm"
FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv5te -mtune=arm9tdmi -msoft-float"
FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"
FF_ASSEMBLER_SUB_DIRS="arm"
elif [ " F F A R C H " = " x 86 " ] ; t h e n F F B U I L D N A M E = f f m p e g − x 86 F F B U I L D N A M E O P E N S S L = o p e n s s l − x 86 F F B U I L D N A M E X 264 = x 264 − x 86 F F B U I L D N A M E L I B S O X R = l i b s o x r − x 86 F F S O U R C E = FF_ARCH" = "x86" ]; then FF_BUILD_NAME=ffmpeg-x86 FF_BUILD_NAME_OPENSSL=openssl-x86 FF_BUILD_NAME_X264=x264-x86 FF_BUILD_NAME_LIBSOXR=libsoxr-x86 FF_SOURCE= FFARCH"="x86"];thenFFBUILDNAME=ffmpeg−x86FFBUILDNAMEOPENSSL=openssl−x86FFBUILDNAMEX264=x264−x86FFBUILDNAMELIBSOXR=libsoxr−x86FFSOURCE=FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=i686-linux-android
FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=x86 --cpu=i686 --enable-yasm"
FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=atom -msse3 -ffast-math -mfpmath=sse"
FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"
FF_ASSEMBLER_SUB_DIRS="x86"
elif [ “$FF_ARCH” = “x86_64” ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=ffmpeg-x86_64
FF_BUILD_NAME_OPENSSL=openssl-x86_64
FF_BUILD_NAME_X264=x264-x86_64
FF_BUILD_NAME_LIBSOXR=libsoxr-x86_64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=x86_64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=x86_64 --enable-yasm"
FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"
FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"
FF_ASSEMBLER_SUB_DIRS="x86"
elif [ “$FF_ARCH” = “arm64” ]; then
FF_ANDROID_PLATFORM=android-21
FF_BUILD_NAME=ffmpeg-arm64
FF_BUILD_NAME_OPENSSL=openssl-arm64
FF_BUILD_NAME_X264=x264-arm64
FF_BUILD_NAME_LIBSOXR=libsoxr-arm64
FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME
FF_CROSS_PREFIX=aarch64-linux-android
FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}
FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=aarch64 --enable-yasm"
FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"
FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"
FF_ASSEMBLER_SUB_DIRS="aarch64 neon"
else
echo “unknown architecture $FF_ARCH”;
exit 1
fi
if [ ! -d $FF_SOURCE ]; then
echo “”
echo “!! ERROR”
echo “!! Can not find FFmpeg directory for $FF_BUILD_NAME”
echo “!! Run ‘sh init-android.sh’ first”
echo “”
exit 1
fi
FF_TOOLCHAIN_PATH=
F
F
B
U
I
L
D
R
O
O
T
/
b
u
i
l
d
/
FF_BUILD_ROOT/build/
FFBUILDROOT/build/FF_BUILD_NAME/toolchain
FF_MAKE_TOOLCHAIN_FLAGS=“
F
F
M
A
K
E
T
O
O
L
C
H
A
I
N
F
L
A
G
S
−
−
i
n
s
t
a
l
l
−
d
i
r
=
FF_MAKE_TOOLCHAIN_FLAGS --install-dir=
FFMAKETOOLCHAINFLAGS−−install−dir=FF_TOOLCHAIN_PATH”
FF_SYSROOT= F F T O O L C H A I N P A T H / s y s r o o t F F P R E F I X = FF_TOOLCHAIN_PATH/sysroot FF_PREFIX= FFTOOLCHAINPATH/sysrootFFPREFIX=FF_BUILD_ROOT/build/ F F B U I L D N A M E / o u t p u t F F D E P O P E N S S L I N C = FF_BUILD_NAME/output FF_DEP_OPENSSL_INC= FFBUILDNAME/outputFFDEPOPENSSLINC=FF_BUILD_ROOT/build/ F F B U I L D N A M E O P E N S S L / o u t p u t / i n c l u d e F F D E P O P E N S S L L I B = FF_BUILD_NAME_OPENSSL/output/include FF_DEP_OPENSSL_LIB= FFBUILDNAMEOPENSSL/output/includeFFDEPOPENSSLLIB=FF_BUILD_ROOT/build/ F F B U I L D N A M E O P E N S S L / o u t p u t / l i b F F D E P X 26 4 I N C = FF_BUILD_NAME_OPENSSL/output/lib FF_DEP_X264_INC= FFBUILDNAMEOPENSSL/output/libFFDEPX264INC=FF_BUILD_ROOT/build/ F F B U I L D N A M E X 264 / o u t p u t / i n c l u d e F F D E P X 26 4 L I B = FF_BUILD_NAME_X264/output/include FF_DEP_X264_LIB= FFBUILDNAMEX264/output/includeFFDEPX264LIB=FF_BUILD_ROOT/build/ F F B U I L D N A M E X 264 / o u t p u t / l i b F F D E P L I B S O X R I N C = FF_BUILD_NAME_X264/output/lib FF_DEP_LIBSOXR_INC= FFBUILDNAMEX264/output/libFFDEPLIBSOXRINC=FF_BUILD_ROOT/build/ F F B U I L D N A M E L I B S O X R / o u t p u t / i n c l u d e F F D E P L I B S O X R L I B = FF_BUILD_NAME_LIBSOXR/output/include FF_DEP_LIBSOXR_LIB= FFBUILDNAMELIBSOXR/output/includeFFDEPLIBSOXRLIB=FF_BUILD_ROOT/build/$FF_BUILD_NAME_LIBSOXR/output/lib
case “
U
N
A
M
E
S
"
i
n
C
Y
G
W
I
N
N
T
−
∗
)
F
F
S
Y
S
R
O
O
T
=
"
UNAME_S" in CYGWIN_NT-*) FF_SYSROOT="
UNAMES"inCYGWINNT−∗)FFSYSROOT="(cygpath -am
F
F
S
Y
S
R
O
O
T
)
"
F
F
P
R
E
F
I
X
=
"
FF_SYSROOT)" FF_PREFIX="
FFSYSROOT)"FFPREFIX="(cygpath -am $FF_PREFIX)”
;;
esac
mkdir -p $FF_PREFIX
mkdir -p $FF_SYSROOT
FF_TOOLCHAIN_TOUCH=“
F
F
T
O
O
L
C
H
A
I
N
P
A
T
H
/
t
o
u
c
h
"
i
f
[
!
−
f
"
FF_TOOLCHAIN_PATH/touch" if [ ! -f "
FFTOOLCHAINPATH/touch"if[!−f"FF_TOOLCHAIN_TOUCH” ]; then
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh
KaTeX parse error: Expected 'EOF', got '\ ' at position 25: …OOLCHAIN_FLAGS \̲ ̲ --platf…FF_ANDROID_PLATFORM
–toolchain=$FF_TOOLCHAIN_NAME
touch $FF_TOOLCHAIN_TOUCH;
fi
#--------------------
echo “”
echo “--------------------”
echo “[*] check ffmpeg env”
echo “--------------------”
export PATH=
F
F
T
O
O
L
C
H
A
I
N
P
A
T
H
/
b
i
n
/
:
FF_TOOLCHAIN_PATH/bin/:
FFTOOLCHAINPATH/bin/:PATH
#export CC=“ccache
F
F
C
R
O
S
S
P
R
E
F
I
X
−
g
c
c
"
e
x
p
o
r
t
C
C
=
"
{FF_CROSS_PREFIX}-gcc" export CC="
FFCROSSPREFIX−gcc"exportCC="{FF_CROSS_PREFIX}-gcc”
export LD=
F
F
C
R
O
S
S
P
R
E
F
I
X
−
l
d
e
x
p
o
r
t
A
R
=
{FF_CROSS_PREFIX}-ld export AR=
FFCROSSPREFIX−ldexportAR={FF_CROSS_PREFIX}-ar
export 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"
cause av_strlcpy crash with gcc4.7, gcc4.8
-fmodulo-sched -fmodulo-sched-allow-regmoves
–enable-thumb is OK
#FF_CFLAGS="$FF_CFLAGS -mthumb"
not necessary
#FF_CFLAGS="$FF_CFLAGS -finline-limit=300"
export COMMON_FF_CFG_FLAGS=
. $FF_BUILD_ROOT/…/…/config/module.sh
#--------------------
with openssl
if [ -f “${FF_DEP_OPENSSL_LIB}/libssl.a” ]; then
echo “OpenSSL detected”
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-nonfree"
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-openssl"
FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_OPENSSL_INC}"
FF_DEP_LIBS="$FF_DEP_LIBS -L${FF_DEP_OPENSSL_LIB} -lssl -lcrypto"
fi
with libx264
if [ -f “
F
F
D
E
P
X
26
4
L
I
B
/
l
i
b
x
264.
a
"
]
;
t
h
e
n
e
c
h
o
"
l
i
b
x
264
d
e
t
e
c
t
e
d
"
F
F
C
F
G
F
L
A
G
S
=
"
{FF_DEP_X264_LIB}/libx264.a" ]; then echo "libx264 detected" FF_CFG_FLAGS="
FFDEPX264LIB/libx264.a"];thenecho"libx264detected"FFCFGFLAGS="FF_CFG_FLAGS --enable-libx264”
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
e
n
c
o
d
e
r
=
l
i
b
x
264
"
F
F
C
F
L
A
G
S
=
"
FF_CFG_FLAGS --enable-encoder=libx264" FF_CFLAGS="
FFCFGFLAGS−−enable−encoder=libx264"FFCFLAGS="FF_CFLAGS -I
F
F
D
E
P
X
26
4
I
N
C
"
F
F
D
E
P
L
I
B
S
=
"
{FF_DEP_X264_INC}" FF_DEP_LIBS="
FFDEPX264INC"FFDEPLIBS="FF_DEP_LIBS -L
F
F
D
E
P
X
26
4
L
I
B
−
l
x
264
"
e
x
p
o
r
t
P
K
G
C
O
N
F
I
G
P
A
T
H
=
"
{FF_DEP_X264_LIB} -lx264" export PKG_CONFIG_PATH="
FFDEPX264LIB−lx264"exportPKGCONFIGPATH="FF_DEP_X264_LIB/pkgconfig”:$FF_PREFIX/lib/pkgconfig
echo $PKG_CONFIG_PATH
fi
if [ -f “ F F D E P L I B S O X R L I B / l i b s o x r . a " ] ; t h e n e c h o " l i b s o x r d e t e c t e d " F F C F G F L A G S = " {FF_DEP_LIBSOXR_LIB}/libsoxr.a" ]; then echo "libsoxr detected" FF_CFG_FLAGS=" FFDEPLIBSOXRLIB/libsoxr.a"];thenecho"libsoxrdetected"FFCFGFLAGS="FF_CFG_FLAGS --enable-libsoxr”
FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_LIBSOXR_INC}"
FF_DEP_LIBS="$FF_DEP_LIBS -L${FF_DEP_LIBSOXR_LIB} -lsoxr"
fi
FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"
#--------------------
Standard options:
FF_CFG_FLAGS=“ F F C F G F L A G S − − p r e f i x = FF_CFG_FLAGS --prefix= FFCFGFLAGS−−prefix=FF_PREFIX”
Advanced options (experts only):
FF_CFG_FLAGS="
F
F
C
F
G
F
L
A
G
S
−
−
c
r
o
s
s
−
p
r
e
f
i
x
=
FF_CFG_FLAGS --cross-prefix=
FFCFGFLAGS−−cross−prefix={FF_CROSS_PREFIX}-"
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
c
r
o
s
s
−
c
o
m
p
i
l
e
"
F
F
C
F
G
F
L
A
G
S
=
"
FF_CFG_FLAGS --enable-cross-compile" FF_CFG_FLAGS="
FFCFGFLAGS−−enable−cross−compile"FFCFGFLAGS="FF_CFG_FLAGS --target-os=linux”
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-pic"
FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-symver"
Optimization options (experts only):
FF_CFG_FLAGS=“ F F C F G F L A G S − − e n a b l e − a s m " F F C F G F L A G S = " FF_CFG_FLAGS --enable-asm" FF_CFG_FLAGS=" FFCFGFLAGS−−enable−asm"FFCFGFLAGS="FF_CFG_FLAGS --enable-inline-asm”
case “
F
F
B
U
I
L
D
O
P
T
"
i
n
d
e
b
u
g
)
F
F
C
F
G
F
L
A
G
S
=
"
FF_BUILD_OPT" in debug) FF_CFG_FLAGS="
FFBUILDOPT"indebug)FFCFGFLAGS="FF_CFG_FLAGS --disable-optimizations”
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
b
u
g
"
F
F
C
F
G
F
L
A
G
S
=
"
FF_CFG_FLAGS --enable-debug" FF_CFG_FLAGS="
FFCFGFLAGS−−enable−debug"FFCFGFLAGS="FF_CFG_FLAGS --disable-small”
;;
*)
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
o
p
t
i
m
i
z
a
t
i
o
n
s
"
F
F
C
F
G
F
L
A
G
S
=
"
FF_CFG_FLAGS --enable-optimizations" FF_CFG_FLAGS="
FFCFGFLAGS−−enable−optimizations"FFCFGFLAGS="FF_CFG_FLAGS --enable-debug”
FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-small"
;;
esac
#--------------------
echo “”
echo “--------------------”
echo “[*] configurate ffmpeg”
echo “--------------------”
cd $FF_SOURCE
if [ -f “./config.h” ]; then
echo ‘reuse configure’
else
which $CC
./configure KaTeX parse error: Expected 'EOF', got '\ ' at position 14: FF_CFG_FLAGS \̲ ̲ --extra…FF_CFLAGS KaTeX parse error: Expected 'EOF', got '\ ' at position 18: …_EXTRA_CFLAGS" \̲ ̲ --extra…FF_DEP_LIBS $FF_EXTRA_LDFLAGS"
make clean
fi
#--------------------
echo “”
echo “--------------------”
echo "[] compile ffmpeg"
echo “--------------------”
cp config. $FF_PREFIX
make $FF_MAKE_FLAGS > /dev/null
make install
mkdir -p $FF_PREFIX/include/libffmpeg
cp -f config.h $FF_PREFIX/include/libffmpeg/config.h
#--------------------
echo “”
echo “--------------------”
echo “[*] link ffmpeg”
echo “--------------------”
echo $FF_EXTRA_LDFLAGS
FF_C_OBJ_FILES=
FF_ASM_OBJ_FILES=
for MODULE_DIR in
F
F
M
O
D
U
L
E
D
I
R
S
d
o
C
O
B
J
F
I
L
E
S
=
"
FF_MODULE_DIRS do C_OBJ_FILES="
FFMODULEDIRSdoCOBJFILES="MODULE_DIR/*.o"
if ls $C_OBJ_FILES 1> /dev/null 2>&1; then
echo “link KaTeX parse error: Double subscript at position 29: …o" FF_C_̲OBJ_FILES="FF_C_OBJ_FILES $C_OBJ_FILES”
fi
for ASM_SUB_DIR in $FF_ASSEMBLER_SUB_DIRS
do
ASM_OBJ_FILES="$MODULE_DIR/$ASM_SUB_DIR/*.o"
if ls $ASM_OBJ_FILES 1> /dev/null 2>&1; then
echo "link $MODULE_DIR/$ASM_SUB_DIR/*.o"
FF_ASM_OBJ_FILES="$FF_ASM_OBJ_FILES $ASM_OBJ_FILES"
fi
done
done
C
C
−
l
m
−
l
z
−
s
h
a
r
e
d
−
−
s
y
s
r
o
o
t
=
CC -lm -lz -shared --sysroot=
CC−lm−lz−shared−−sysroot=FF_SYSROOT -Wl,–no-undefined -Wl,-z,noexecstack $FF_EXTRA_LDFLAGS
-Wl,-soname,libijkffmpeg.so
$FF_C_OBJ_FILES
$FF_ASM_OBJ_FILES
$FF_DEP_LIBS
-o $FF_PREFIX/libijkffmpeg.so
mysedi() {
f=$1
exp=$2
n=basename $f
cp
f
/
t
m
p
/
f /tmp/
f/tmp/n
sed
e
x
p
/
t
m
p
/
exp /tmp/
exp/tmp/n >
f
r
m
/
t
m
p
/
f rm /tmp/
frm/tmp/n
}
echo “”
echo “--------------------”
echo “[] create files for shared ffmpeg"
echo “--------------------”
rm -rf $FF_PREFIX/shared
mkdir -p $FF_PREFIX/shared/lib/pkgconfig
ln -s $FF_PREFIX/include $FF_PREFIX/shared/include
ln -s $FF_PREFIX/libijkffmpeg.so $FF_PREFIX/shared/lib/libijkffmpeg.so
echo "gongjia: $FF_PREFIX/lib/pkgconfig/.pc”
cp $FF_PREFIX/lib/pkgconfig/.pc $FF_PREFIX/shared/lib/pkgconfig
for f in $FF_PREFIX/lib/pkgconfig/.pc; do
# in case empty dir
if [ ! -f $f ]; then
continue
fi
cp $f
F
F
P
R
E
F
I
X
/
s
h
a
r
e
d
/
l
i
b
/
p
k
g
c
o
n
f
i
g
f
=
FF_PREFIX/shared/lib/pkgconfig f=
FFPREFIX/shared/lib/pkgconfigf=FF_PREFIX/shared/lib/pkgconfig/basename $f
echo “f=$f”
# OSX sed doesn’t have in-place(-i)
mysedi $f ‘s//output//output/shared/g’
mysedi $f ‘s/-lavcodec/-lijkffmpeg/g’
mysedi $f ‘s/-lavfilter/-lijkffmpeg/g’
mysedi $f ‘s/-lavformat/-lijkffmpeg/g’
mysedi $f ‘s/-lavutil/-lijkffmpeg/g’
mysedi $f ‘s/-lswresample/-lijkffmpeg/g’
mysedi $f ‘s/-lswscale/-lijkffmpeg/g’
done
最后,是compile-ffmpeg.sh,这个文件没有修改~~~
#! /usr/bin/env bash
Copyright © 2013-2014 Zhang Rui bbcallen@gmail.com
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This script is based on projects below
https://github.com/yixia/FFmpeg-Android
http://git.videolan.org/?p=vlc-ports/android.git;a=summary
#----------
UNI_BUILD_ROOT=pwd
FF_TARGET=$1
FF_TARGET_EXTRA=$2
set -e
set +x
FF_ACT_ARCHS_32=“armv5 armv7a x86”
FF_ACT_ARCHS_64=“armv5 armv7a arm64 x86 x86_64”
FF_ACT_ARCHS_ALL=$FF_ACT_ARCHS_64
echo_archs() {
echo “"
echo “[*] check archs”
echo "”
echo “FF_ALL_ARCHS = $FF_ACT_ARCHS_ALL”
echo “FF_ACT_ARCHS = $*”
echo “”
}
echo_usage() {
echo “Usage:”
echo " compile-ffmpeg.sh armv5|armv7a|arm64|x86|x86_64"
echo " compile-ffmpeg.sh all|all32"
echo " compile-ffmpeg.sh all64"
echo " compile-ffmpeg.sh clean"
echo " compile-ffmpeg.sh check"
exit 1
}
echo_nextstep_help() {
echo “”
echo “--------------------”
echo “[*] Finished”
echo “--------------------”
echo “# to continue to build ijkplayer, run script below,”
echo "sh compile-ijk.sh "
}
#----------
case “$FF_TARGET” in
“”)
echo_archs armv7a
sh tools/do-compile-ffmpeg.sh armv7a
;;
armv5|armv7a|arm64|x86|x86_64)
echo_archs $FF_TARGET $FF_TARGET_EXTRA
sh tools/do-compile-ffmpeg.sh $FF_TARGET $FF_TARGET_EXTRA
echo_nextstep_help
;;
all32)
echo_archs $FF_ACT_ARCHS_32
for ARCH in $FF_ACT_ARCHS_32
do
sh tools/do-compile-ffmpeg.sh $ARCH $FF_TARGET_EXTRA
done
echo_nextstep_help
;;
all|all64)
echo_archs $FF_ACT_ARCHS_64
for ARCH in $FF_ACT_ARCHS_64
do
sh tools/do-compile-ffmpeg.sh $ARCH $FF_TARGET_EXTRA
done
echo_nextstep_help
;;
clean)
echo_archs FF_ACT_ARCHS_64
for ARCH in
F
F
A
C
T
A
R
C
H
S
A
L
L
d
o
i
f
[
−
d
f
f
m
p
e
g
−
FF_ACT_ARCHS_ALL do if [ -d ffmpeg-
FFACTARCHSALLdoif[−dffmpeg−ARCH ]; then
cd ffmpeg-$ARCH && git clean -xdf && cd -
fi
done
rm -rf ./build/ffmpeg-*
;;
check)
echo_archs FF_ACT_ARCHS_ALL
;;
*)
echo_usage
exit 1
;;
esac
这里面要注意的是:
虽然在do-compile-ffmpeg.sh
with libx264
if [ -f “
F
F
D
E
P
X
26
4
L
I
B
/
l
i
b
x
264.
a
"
]
;
t
h
e
n
e
c
h
o
"
l
i
b
x
264
d
e
t
e
c
t
e
d
"
F
F
C
F
G
F
L
A
G
S
=
"
{FF_DEP_X264_LIB}/libx264.a" ]; then echo "libx264 detected" FF_CFG_FLAGS="
FFDEPX264LIB/libx264.a"];thenecho"libx264detected"FFCFGFLAGS="FF_CFG_FLAGS --enable-libx264”
FF_CFG_FLAGS=“
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
e
n
c
o
d
e
r
=
l
i
b
x
264
"
F
F
C
F
L
A
G
S
=
"
FF_CFG_FLAGS --enable-encoder=libx264" FF_CFLAGS="
FFCFGFLAGS−−enable−encoder=libx264"FFCFLAGS="FF_CFLAGS -I
F
F
D
E
P
X
26
4
I
N
C
"
F
F
D
E
P
L
I
B
S
=
"
{FF_DEP_X264_INC}" FF_DEP_LIBS="
FFDEPX264INC"FFDEPLIBS="FF_DEP_LIBS -L
F
F
D
E
P
X
26
4
L
I
B
−
l
x
264
"
e
x
p
o
r
t
P
K
G
C
O
N
F
I
G
P
A
T
H
=
"
{FF_DEP_X264_LIB} -lx264" export PKG_CONFIG_PATH="
FFDEPX264LIB−lx264"exportPKGCONFIGPATH="FF_DEP_X264_LIB/pkgconfig”:$FF_PREFIX/lib/pkgconfig
echo $PKG_CONFIG_PATH
fi
这里我把-enable-encoder=libx264开启了,但是module.sh却还是把encoder全部disable了,只开启了aac,所以还要修改一下module.sh
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-encoders"
module.sh文件
#! /usr/bin/env bash
#--------------------
Standard options:
export COMMON_FF_CFG_FLAGS=
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --prefix=PREFIX"
Licensing options:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-gpl"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-version3"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-nonfree"
Configuration options:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-static"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-shared"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-small"
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
r
u
n
t
i
m
e
−
c
p
u
d
e
t
e
c
t
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-runtime-cpudetect" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−runtime−cpudetect"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-gray”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-swscale-alpha"
Program options:
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
g
r
a
m
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-programs" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−programs"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-ffmpeg”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
f
f
p
l
a
y
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-ffplay" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−ffplay"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-ffprobe”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
Documentation options:
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
d
o
c
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-doc" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−doc"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-htmlpages”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
m
a
n
p
a
g
e
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-manpages" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−manpages"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-podpages”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-txtpages"
Component options:
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
a
v
d
e
v
i
c
e
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-avdevice" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−avdevice"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-avcodec”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
a
v
f
o
r
m
a
t
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-avformat" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−avformat"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-avutil”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
s
w
r
e
s
a
m
p
l
e
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-swresample" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−swresample"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-swscale”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
o
s
t
p
r
o
c
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-postproc" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−postproc"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-avfilter”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-avresample"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-pthreads"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-w32threads"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-os2threads"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-network"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-dct"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-dwt"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-lsp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-lzo"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-mdct"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-rdft"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-fft"
Hardware accelerators:
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
d
3
d
11
v
a
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-d3d11va" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−d3d11va"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-dxva2”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
v
a
a
p
i
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-vaapi" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−vaapi"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-vda”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
v
d
p
a
u
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-vdpau" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−vdpau"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-videotoolbox”
Individual component options:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-everything"
export COMMON_FF_CFG_FLAGS=“ C O M M O N F F C F G F L A G S − − e n a b l e − e n c o d e r s " e x p o r t C O M M O N F F C F G F L A G S = " COMMON_FF_CFG_FLAGS --enable-encoders" export COMMON_FF_CFG_FLAGS=" COMMONFFCFGFLAGS−−enable−encoders"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-encoder=aac”
./configure --list-decoders
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoders" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoders"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=aac”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
=
a
a
c
l
a
t
m
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoder=aac_latm" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoder=aaclatm"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=flv”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
=
h
263
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoder=h263" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoder=h263"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=h263i”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
=
h
263
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoder=h263p" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoder=h263p"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=h264”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
=
m
p
3
∗
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoder=mp3*" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoder=mp3∗"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=vp6”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
c
o
d
e
r
=
v
p
6
a
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-decoder=vp6a" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−decoder=vp6a"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-decoder=vp6f”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=hevc"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-hwaccels"
./configure --list-muxers
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
m
u
x
e
r
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-muxers" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−muxers"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-muxer=mpegts”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
m
u
x
e
r
=
m
p
4
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-muxer=mp4" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−muxer=mp4"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-muxer=flv”
./configure --list-demuxers
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxers" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxers"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=aac”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
c
o
n
c
a
t
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=concat" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=concat"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=data”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
f
l
v
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=flv" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=flv"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=hls”
#export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
l
a
t
m
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=latm" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=latm"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=live_flv”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
l
o
a
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=loas" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=loas"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=m4v”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
m
o
v
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=mov" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=mov"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=mp3”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
m
p
e
g
p
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=mpegps" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=mpegps"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=mpegts”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
m
p
e
g
v
i
d
e
o
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=mpegvideo" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=mpegvideo"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
d
e
m
u
x
e
r
=
s
d
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-demuxer=sdp" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−demuxer=sdp"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-demuxer=rtp”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=hevc"
./configure --list-parsers
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
p
a
r
s
e
r
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-parsers" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−parsers"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-parser=aac”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-parser=aac_latm"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-parser=ac3"
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
p
a
r
s
e
r
=
h
263
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-parser=h263" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−parser=h263"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-parser=h264”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-parser=hevc"
./configure --list-bsf
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
b
s
f
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-bsfs" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−bsfs"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=chomp”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
b
s
f
=
d
c
a
c
o
r
e
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-bsf=dca_core" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−bsf=dcacore"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=dump_extradata”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
b
s
f
=
h
e
v
c
m
p
4
t
o
a
n
n
e
x
b
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-bsf=hevc_mp4toannexb" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−bsf=hevcmp4toannexb"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=imx_dump_header”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
b
s
f
=
m
j
p
e
g
2
j
p
e
g
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-bsf=mjpeg2jpeg" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−bsf=mjpeg2jpeg"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=mjpega_dump_header”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
b
s
f
=
m
o
v
2
t
e
x
t
s
u
b
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-bsf=mov2textsub" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−bsf=mov2textsub"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=mp3_header_decompress”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
b
s
f
=
m
p
e
g
4
u
n
p
a
c
k
b
f
r
a
m
e
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-bsf=mpeg4_unpack_bframes" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−bsf=mpeg4unpackbframes"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=noise”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
b
s
f
=
r
e
m
o
v
e
e
x
t
r
a
d
a
t
a
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-bsf=remove_extradata" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−bsf=removeextradata"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-bsf=text2movsub”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=vp9_superframe"
./configure --list-protocols
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
p
r
o
t
o
c
o
l
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-protocols" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−protocols"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-protocol=async”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
b
l
u
r
a
y
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=bluray" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=bluray"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-protocol=concat”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
c
r
y
p
t
o
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=crypto" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=crypto"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=ffrtmpcrypt”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
p
r
o
t
o
c
o
l
=
f
f
r
t
m
p
h
t
t
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-protocol=ffrtmphttp" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−protocol=ffrtmphttp"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=gopher”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
i
c
e
c
a
s
t
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=icecast" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=icecast"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=librtmp*”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
l
i
b
s
s
h
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=libssh" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=libssh"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=md5”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
m
m
s
h
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=mmsh" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=mmsh"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=mmst”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
r
t
m
p
∗
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=rtmp*" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=rtmp∗"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-protocol=rtmp”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
p
r
o
t
o
c
o
l
=
r
t
m
p
t
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-protocol=rtmpt" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−protocol=rtmpt"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-protocol=rtp”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
s
c
t
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=sctp" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=sctp"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=srtp”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
p
r
o
t
o
c
o
l
=
s
u
b
f
i
l
e
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-protocol=subfile" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−protocol=subfile"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-protocol=unix”
#export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
d
e
v
i
c
e
s
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-devices" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−devices"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filters”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
c
r
o
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=crop" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=crop"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=transpose”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
v
f
l
i
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=vflip" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=vflip"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=hflip”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
s
c
a
l
e
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=scale" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=scale"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=format”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
o
v
e
r
l
a
y
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=overlay" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=overlay"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=buffer”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
b
u
f
f
e
r
s
i
n
k
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=buffersink" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=buffersink"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=lut”
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
e
n
a
b
l
e
−
f
i
l
t
e
r
=
u
n
s
h
a
r
p
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --enable-filter=unsharp" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−enable−filter=unsharp"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --enable-filter=lutyuv”
gongjia add
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
External library support:
export COMMON_FF_CFG_FLAGS=“
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
−
−
d
i
s
a
b
l
e
−
i
c
o
n
v
"
e
x
p
o
r
t
C
O
M
M
O
N
F
F
C
F
G
F
L
A
G
S
=
"
COMMON_FF_CFG_FLAGS --disable-iconv" export COMMON_FF_CFG_FLAGS="
COMMONFFCFGFLAGS−−disable−iconv"exportCOMMONFFCFGFLAGS="COMMON_FF_CFG_FLAGS --disable-audiotoolbox”
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-videotoolbox"