ffmpeg6.0版本Android交叉编译不同平台下的libffmpeg.so

ffmpeg版本:6.0

NDK版本:21.4.7075529

注意:6.0版本编译.a文件时,libavcodec.a和libswscale.a包含同一个half2float.o,在链接libavcodec.a和libswscale.a时会出现函数重定义的错误。需要在执行脚本之前修改libswscale文件夹下的Makefile,将OBJS下的half2float.o删除。脚本中NDK等路径根据自己电脑的路径自行修改。

arm64-v8a平台编译脚本:

#!/bin/sh
# NDK 所在的路径
NDK=/home/tianhao/Android/Sdk/ndk/21.4.7075529
# 需要编译出的平台,这里是 arm64-v8a
ARCH=aarch64
# 支持的最低 Android API
API=21
# 编译后输出目录,在 ffmpeg 源码目录下的 /android/arm64-v8a
OUTPUT=$(pwd)/android/arm64-v8a
# NDK 交叉编译工具链所在路径
TOOLCHAIN=/home/tianhao/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64

SYSROOT_L=$TOOLCHAIN/sysroot/usr/lib/aarch64-linux-android
GCC_L=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x

build() {
   ./configure \
   --target-os=android \
   --prefix=$OUTPUT \
   --arch=$ARCH \
   --cpu=armv8-a \
   --sysroot=$TOOLCHAIN/sysroot \
   --enable-static \
   --disable-ffmpeg \
   --disable-ffplay \
   --disable-ffprobe \
   --disable-debug \
   --disable-doc \
   --disable-avdevice \
   --disable-shared \
   --enable-cross-compile \
   --enable-asm \
   --enable-small \
   --enable-avcodec \
   --enable-avformat \
   --enable-avutil \
   --enable-swresample \
   --enable-swscale \
   --enable-avfilter \
   --enable-postproc \
   --enable-network \
   --enable-bsfs \
   --enable-filters \
   --enable-encoders \
   --enable-gpl \
   --enable-muxers \
   --enable-parsers \
   --enable-protocols \
   --enable-nonfree \
   --enable-jni \
   --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
   --cc=$TOOLCHAIN/bin/aarch64-linux-android$API-clang \
   --cxx=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ \
   --extra-cflags="-fpic -march=armv8-a -I$OUTPUT/include" \
   --ex
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值