Ubuntu18.04下编译FFmpeg for Android

本文详细介绍如何在Ubuntu 18.04环境下,使用FFmpeg 4.0.2和Android NDK r14b,针对aarch64架构编译FFmpeg库。文章覆盖下载源码、配置编译脚本、解决常见问题等关键步骤,帮助读者顺利生成适用于Android平台的FFmpeg so库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     模仿、求学都不是我们的目的,最终我们都希望在求知的过程中,有所领悟。最终走出自己的道。淡定、从容,如果不是刻意伪装,相信当事者必有丰富的人生阅历。把学习记录下面,不仅是为了备忘,更是对学习过程的梳理。当我们可以站在过去的肩膀上,又可以很好地向别人表达自己的思想。相信我们的人生一定会更加精彩。道路维艰,且让我们脚踏实地,步步为营。

     下面的文章参考了众多博客,亦夹杂了个人在编译过程的一些理解。力求通过一篇博客,让自己从容编译FFmpeg for Android。

一、准备(重点)

1、系统:Ubuntu18.04

2、FFmpeg:ffmpeg-4.0.2

3、NDK:android-ndk-r14b-linux-x86_64

二、下载FFmpeg

1、百度网盘

链接:https://pan.baidu.com/s/118QiHGVCkFnk2B9ox7572g 
提取码:zug8 

2、官网地址

http://www.ffmpeg.org/download.html

3、在git上的地址

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

四、下载NDK

https://developer.android.google.cn/ndk/downloads/older_releases.html

五、将下载压缩包解压

1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压

六、配置编译脚本

1、进入ffmpeg-4.0.2目录

2、在ffmpeg目录下新建build_android.sh脚本文件(文件名称可以随便取)。

3、编写脚本

  1 #!/bin/bash
  2 # 清空上次的编译
  3 make clean
  4 #你自己的NDK路径。
  5 export NDK=/opt/download/android-ndk-r14b
  6 # 设置你的android平台编译器的版本 这里采用Android4.0 
  7 export SYSROOT=$NDK/platforms/android-23/arch-arm64/
  8 #编译使用的toolchain
  9 export TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
 10 export CPU=aarch64
 11 # 这个是输出的路径
 12 export PREFIX=$(pwd)/android/$CPU
 13 export ADDI_CFLAGS="-march=armv8-a"
 14 ./configure --target-os=linux \
 15         --prefix=$PREFIX --arch=arm64 \
 16         --disable-doc \
 17         --enable-shared \
 18         --disable-static \
 19         --disable-x86asm \
 20         --disable-symver \
 21         --enable-gpl \
 22         --disable-ffmpeg \
 23         --disable-ffplay \
 24         --disable-ffprobe \
 25         --disable-doc \
 26         --disable-symver \
 27         --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
 28         --enable-cross-compile \
 29         --sysroot=$SYSROOT \
 30         --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
 31         --extra-ldflags="$ADDI_LDFLAGS" \
 32         $ADDITIONAL_CONFIGURE_FLAG
 33 make clean
 34 make
 35 make install

4、脚本说明

1) 如果大家只是要编译一个可用的so库,不考虑so库大小的话,可以拷贝上述脚本代码作为模板,上图画圈部分根据自己实际情况,进行配置。

2)因为上图是根据我的情况配置,从我的实际中挑出几处,供对号入座。为实际操作提供参考

5、 安卓 CPU架构

6、注意事项

在编译x86或x86_64时,将--disable-x86asm \这项注释掉,并在编译脚本时,根据错误提示,安装相应的指令。

七、修改配置文件

1、修改FFmpeg下的configure配置文件生成标准的.so,而不是.so.xxx,将变量右侧的内容改为以下配置:

2、 对这几行代码的查找可以通过vim命令快速定位

八、编译

执行脚本命令:./build_android.sh

九、问题

1、C compiler test failed.(来自网络)

导致这种现象是因为写的程序脚本中SYSROOT=${NDK}/platforms/android-8/arch-arm 的android-8 的版本过低导致的,提高到21以上就好了。

2、答案来自https://blog.youkuaiyun.com/weixin_42471952/article/details/101713096

3、答案来自https://blog.youkuaiyun.com/weixin_42471952/article/details/101713096

4、答案来自https://blog.youkuaiyun.com/weixin_42471952/article/details/101713096

十、编译成功

参考链接:

https://www.cnblogs.com/wangluochong/p/7194037.html

https://blog.youkuaiyun.com/c6E5UlI1N/article/details/82836627

https://blog.youkuaiyun.com/iamcxl369/article/details/79900492

https://blog.youkuaiyun.com/weixin_42471952/article/details/101713096

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值