在windows上交叉编译android平台的ffmpeg库

前置条件:

在任意目录新建脚本"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库和头文件了。目录结构是这样的:

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值