- 准备工作
下载ffmpeg,官网最新
下载NDK,android-ndk-r18b,19以后独立工具链使用有条件,参考官方文档
修改ffmpeg configure文件 参考引文1 - 编译脚本
#!/bin/bash
ADDI_CFLAGS="-marm"
API=27
PLATFORM=arm-linux-androideabi
CPU=armv7-a
#使用自己的路径
NDK=/Users/seedinwind/Documents/android-ndk-r18b
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/
TOOLCHAIN=$NDK/tmp/my-android-toolchain
#手动创建输出目录
OUTPUT=/Users/seedinwind/Documents/ffmpeg-4.2.1/share
function build_one
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--nm=${TOOLCHAIN}/bin/arm-linux-androideabi-nm \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
#make clean
#make -j4
#make install
}
build_one
注意ASM参数,编译依赖头文件和库文件,库文件位置为SYSROOT,头文件位置为ASM,ndk-r18b版本直接放在$ISYSROOT/usr/include/目录下,其中asm文件夹根据目标平台放在不同子目录下,编译时要把对应的平台目录下的asm放到$ISYSROOT/usr/include/下,否则会报错,头文件找不到
3.独立工具链
独立工具链参考NDK官方文档 ,执行命令生成对应平台独立工具链,设置$TOOLCHAIN
python3 $NDK_HOME/build/tools/make_standalone_toolchain.py
–arch arm --api 21 --install-dir /tmp/my-android-toolchain
4.执行
make
make install
FFmpeg的Android平台移植—编译篇
ffmpeg ./configure参数说明
解决ffmpeg 交叉编译报错 ./configure: line 953: /bin/arm-linux-androideabi-clang: No such file or directory C