前置条件:
在任意目录新建脚本"build_ffmpeg.sh",内容如下:
前几行根据自己的路径来改写。 configure后面也可以根据自己的需要来裁剪一些功能。
这个脚本里定义了一个函数,然后在下面调用了两次,每次编译一个ABI。我们需要编译arm64-v8a和armeabi-v7a这两个ABI对应的so
#!/bin/bash
set -e
SRC_DIR=D:/Program/ffmpeg-4.4
DST_DIR=D:/Program/ffmpeg_build_out
NDK=D:/Android/Sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/windows-x86_64
API=30
cd $SRC_DIR
function build_onearch
{
echo ">> configure $CPU"
./configure --enable-cross-compile --target-os=android \
--prefix=$DST_DIR/$ANDROID_ABI --cross-prefix=$CROSS_PREFIX \
--cc=$CLANG_PREFIX --cxx=$CLANG_PREFIX++ \
--arch=$ARCH --cpu=$CPU --sysroot=$NDK/sysroot \
--enable-shared --disable-static \
--enable-small --disable-programs --disable-doc \
--enable-asm --enable-neon \
--enable-jni --enable-mediacodec
echo "<< configure $CPU"
make clean
make
make install
}
ANDROID_ABI=arm64-v8a
ARCH=arm64
CPU=armv8-a
CROSS_PREFIX=$NDK/bin/aarch64-linux-android-
CLANG_PREFIX=$NDK/bin/aarch64-linux-android$API-clang
build_onearch
ANDROID_ABI=armeabi-v7a
ARCH=arm
CPU=armv7-a
CROSS_PREFIX=$NDK/bin/arm-linux-androideabi-
CLANG_PREFIX=$NDK/bin/armv7a-linux-androideabi$API-clang
build_onearch
然后打开msys2的shell,执行这个脚本即可。
?
每个ABI大概需要编十几分钟。
编好后打开我们在脚本前几行设置的DST_DIR目录,就能看到编译出来的so库和头文件了。目录结构是这样的:
?
|