FFmpeg生成Android so库

本文详细介绍了如何在Mac和Linux环境下,利用FFmpeg4.2.2版本和NDK21编译生成Android的so库。重点讲述了环境配置、脚本编写及执行过程,包括Mac上的GCC替代为CLANG的注意事项和Linux下的快速编译方法。
摘要由CSDN通过智能技术生成

# Mac编译

第一次接入FFmpeg,搞了整整一天,生成so库,可谓一波三折,功夫不负有心人有心人,终于搞定了。网上很多方案都是基于ndk14之前生成的,最新版本的ndk21和最新版本的FFmpeg4.3.1用不了,错误很大,搞了好一阵子发现在Linux系统中一直报错,刚刚开始以为c编译器没有,于是安装了,yum install yasm和nasm但是还是报错,然后把ndk换成ndk14才可以编译了,但是问题又来了,虽然编译成功了但是没有生成so库文件内容。最后通过日志分析,才知道在ndk版本16开始c编译器已经被取消,使用的是clang编译,于是重新有引入新的ndk21,才搞定。

一、编译环境

FFmpeg4.3.1版本变化内容比较多,实践起来资料比较少,发现了很多问题,因此采用最常用的FFmpeg4.2.2。对于C/C++的编译,通常有两个工具 GCC 和 CLANG 。CLANG 则是更高效的C/C++编译工具,Google在NDK17 以后,把 GCC 移除了,全面推行使用 CLANG 。下面使用CLANG编译。

1、我的编译环境:

ffmpeg-4.2.2.tar.bz2

Mac

NDK21.1.6352462

QIOO855手机

2、查看手机支持的CUP:

adb shell cat /proc/cpuinfo
adb shell getprop ro.product.cpu.abi

ARCH=arm64

CPU=armv8-a

TOOL_CPU_NAME=aarch64

事实上这也是目前绝大多数手机都支持的CUP架构。

3、编译工具链目录:

/Users/xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/bin

4、交叉编译环境目录:

/Users/xxx/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot

二、下载

1、NDK:

NDK 下载 | Android NDK | Android Developers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值