-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathandroid-build.sh
More file actions
143 lines (136 loc) · 3.89 KB
/
android-build.sh
File metadata and controls
143 lines (136 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash
NDK_HOME=$HOME/sdk/ndk-bundle
PLATFORM=linux
TOOLCHAIN=${NDK_HOME}/toolchains/llvm/prebuilt/${PLATFORM}-x86_64
ANDROID_API=21
echo PLATFORM=${PLATFORM}
echo NDK_HOME=${NDK_HOME}
echo TOOLCHAIN=${TOOLCHAIN}
echo ANDROID_API=${ANDROID_API}
get_cpu_count() {
if [ "$(uname)" == "Darwin" ]; then
echo $(sysctl -n hw.physicalcpu)
else
echo $(nproc)
fi
}
build_ffmpeg() {
echo "Compiling FFmpeg for $CPU"
./configure \
--prefix=${PREFIX} \
--pkg-config=pkg-config \
${ASM_FLAGS} \
--disable-everything \
--enable-cross-compile \
--enable-pic \
--disable-shared \
--enable-static \
--disable-avdevice \
--disable-filters \
--disable-programs \
--disable-network \
--disable-avfilter \
--disable-postproc \
--disable-encoders \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-ffmpeg \
${SIZE_OPTIONS} \
${DEBUG_OPTIONS} \
--enable-decoder=h264 \
--enable-decoder=mpeg4 \
--enable-decoder=h263 \
--enable-decoder=h263p \
--enable-decoder=mpeg2video \
--enable-decoder=mjpeg \
--enable-decoder=mjpegb \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--enable-decoder=wavpack \
--enable-decoder=amrnb \
--enable-decoder=amrwb \
--enable-decoder=amr \
--enable-decoder=mp3 \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s8 \
--enable-demuxer=h264 \
--enable-demuxer=m4v \
--enable-demuxer=mp3 \
--enable-demuxer=mov \
--enable-demuxer=mpegvideo \
--enable-demuxer=mpegps \
--enable-demuxer=mjpeg \
--enable-demuxer=mov \
--enable-demuxer=avi \
--enable-demuxer=aac \
--enable-demuxer=pcm_s16le \
--enable-demuxer=pcm_s8 \
--enable-demuxer=wav \
--enable-demuxer=amr \
--enable-demuxer=amrnb \
--enable-demuxer=amrwb \
--enable-encoder=pcm_s16le \
--enable-muxer=amr \
--enable-muxer=avi \
--enable-muxer=mp3 \
--enable-muxer=wav \
--enable-muxer=pcm_s16le \
--enable-muxer=pcm_s8 \
--enable-muxer=ogg \
--enable-parser=h264 \
--enable-parser=mpeg4video \
--enable-parser=mpegvideo \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=mpegaudio \
--enable-protocol=file \
--cross-prefix=${CROSS_PREFIX} \
--target-os=android \
--arch=${ARCH} \
--cpu=${CPU} \
--cc=${CC} \
--cxx=${CXX} \
--enable-cross-compile \
--sysroot=${SYSROOT} \
--extra-cflags="-Os -fpic -DVK_ENABLE_BETA_EXTENSIONS=0 ${OPTIMIZE_CFLAGS}" \
--extra-ldflags="${ADDI_LDFLAGS}" \
${ADDITIONAL_CONFIGURE_FLAG}
make clean
make -j$(get_cpu_count)
make install
echo "The Compilation of FFmpeg for $CPU is completed"
}
#armv7
ARCH=arm
CPU=armv7-a
CC=${TOOLCHAIN}/bin/armv7a-linux-androideabi${ANDROID_API}-clang
CXX=${TOOLCHAIN}/bin/armv7a-linux-androideabi${ANDROID_API}-clang++
SYSROOT=${NDK_HOME}/toolchains/llvm/prebuilt/${PLATFORM}-x86_64/sysroot
CROSS_PREFIX=${TOOLCHAIN}/bin/llvm-
PREFIX=$(pwd)/android/armeabi-v7a
OPTIMIZE_CFLAGS="-march=${CPU}"
ASM_FLAGS=" --enable-neon --enable-asm --enable-inline-asm"
build_ffmpeg
#armv8-a
ARCH=arm64
CPU=armv8-a
CC=${TOOLCHAIN}/bin/aarch64-linux-android${ANDROID_API}-clang
CXX=${TOOLCHAIN}/bin/aarch64-linux-android${ANDROID_API}-clang++
SYSROOT=${NDK_HOME}/toolchains/llvm/prebuilt/${PLATFORM}-x86_64/sysroot
CROSS_PREFIX=${TOOLCHAIN}/bin/llvm-
PREFIX=$(pwd)/android/arm64-v8a
OPTIMIZE_CFLAGS="-march=${CPU}"
ASM_FLAGS=" --enable-neon --enable-asm --enable-inline-asm"
build_ffmpeg
#x86_64
ARCH=x86_64
CPU=x86-64
CC=${TOOLCHAIN}/bin/x86_64-linux-android${ANDROID_API}-clang
CXX=${TOOLCHAIN}/bin/x86_64-linux-android${ANDROID_API}-clang++
SYSROOT=${NDK_HOME}/toolchains/llvm/prebuilt/${PLATFORM}-x86_64/sysroot
CROSS_PREFIX=${TOOLCHAIN}/bin/llvm-
PREFIX=$(pwd)/android/x86_64
OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64"
ASM_FLAGS=" --disable-neon --disable-asm --disable-inline-asm"
build_ffmpeg