音视频开发系列(61) -交叉编译android使用的FFmpeg(3.x和4.x)

本文介绍了如何交叉编译ffmpeg 3.x和4.x版本以适应Android,涉及配置NDK环境、编写编译脚本、解决编译问题以及在Android Studio中引入使用。详细讲解了不同版本ffmpeg与NDK的匹配,以及编译过程中遇到的错误及其解决方案。
摘要由CSDN通过智能技术生成

这篇我们来学习实践ffmpeg的交叉编译,其中会涉及到ffmpeg的版本、NDK的版本、编译脚本的编写、Gradler ABI处理 以及 CMakeLists.txt的针对不同ndk版本脚步的编写
在交叉编译的时候由于平台差异性大,需要工具来解决这一问题,就出现了各种工具链,即Toolchains。而NDK提供了交叉编译的一整套工具的集合,不同版本和配置会有不同差异,很容易就会出现各种问题,是一个不断折腾的过程,),本文记录学习实践的过程,ffmpeg3.3.9+ndk16,以及ffmpeg4.3.1或者ffmpeg4.2.4+ndk21 欢迎交流讨论。

一、配置安装android交叉编译工具链

  1. 下载NDK
    NDK有很多版本 14,16,21等等,我们该选择什么版本比较好呐?
    现在一般都选用16以上的,16时编译工具链做了不少变化。而不同的ffmpeg版本支持的NDK版本也不同,比如,ffmpeg3.x的版本使用android-ndk-r16b,但是ffmpeg4.x的版本使用16就编译不过,这里选用的是android-ndk-r21e.

  2. 配置NDK环境
    android-ndk-r21e

配置环境变量
vim ~/.bash_profile

export NDK_PATH=/Users/xxx/tools/android-ndk-r21e
export PATH=${PATH}:$NDK_PATH

编辑保存好之后执行下下面语句使之生效
. ~/.bash_profile
  1. 安装android交叉编译工具链(也可省略)
    /Users/xxx/tools/android-ndk-r 21e/build/tools路径下有make-standalone-toolchain.sh和make_standalone_toolchain.py,我们使用py版本来配置android交叉编译工具链

用到make_standalone_toolchain.py

先创建交叉编译工具链输出的路径
/Users/xxx/tools/android-ndk-r21e/android-toolchains/android-19

mkdir android-toolchains
cd android-toolchains
mkdir android-19
cd android-19

with open(src, 'rb') as fsrc:

到android-ndk-r16b/build/tools
下执行
sudo ./make_standalone_toolchain.py --arch arm --api 19 --install-dir ../../android-toolchains/android-19/arm-arch

这个步骤相当于把配置的arch和api等相关信息在指定文件夹下面做个copy(个人理解),方便后续编写ffmpeg编译脚本时用指定toolchain。

之所以说这个步骤可以省略,是因为,也可以直接在后续编写ffmpeg编译脚本中指定不同ABI和API对应的toolchain路径。

二、手写FFmpeg编译脚本 进行编译(针对ffmpeg3.x和ffmpeg4.x版本)

下载ffmpeg

不同的ffmpeg版本使用编译时需要的ndk版本也会有不同,如果在上一步下载配置的NDK是16,则下载3.x的ffmpeg。如果NDK是21,则下载4.x的ffmpeg。

这个编译的过程折腾了自己两三天的时间,为了搞清楚原因,避免后续踩坑,针对ffmpeg3.x和ffmpeg4.x都进行记录。

我们先来看下编译第三方库的一般通用步骤

  1. 看READMME.md

  2. 编译项目需要Makefile,如果有尝试使用make编译,如果没有,需要写makefile或者cmake构建

  3. 如果报错需要解决,一般都是Makefile的一些配置文件没有生成,运行下configure

  4. 生成配置文件后,再次运行make,但是编译后的文件(elf,so,a)只能在当前系统下运行。

  5. 如果需要需要跑到android或者ios需要交叉编译

  6. 需要给configure传一些脚本编译参数(关键!)

关注+后台私信我,领取2022最新最全学习提升资料包《Andoird音视频开发必备手册+音视频最新学习视频+大厂面试真题+项目实战源码讲义》资料内容包括(C/C++,Linux,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值