在linux下交叉编译android平台的ffmpeg4.2动态库

本文介绍了如何在Linux系统下,使用NDK r21交叉编译ffmpeg4.2动态库到Android平台。内容包括环境准备、下载ffmpeg和NDK、配置clang头文件和库路径、解决工具路径不一致问题、裁剪ffmpeg功能以及错误处理。通过脚本编译和调整configure文件两种方式解决编译过程中遇到的问题。
摘要由CSDN通过智能技术生成

在linux下交叉编译android平台的ffmpeg4.2动态库

环境及版本

  • linux(本人在cestos和ubuntu上测试通过)

    • 这里贴一下cestos的内核
    [root@bogon lib]# uname -a
    Linux bogon 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
    
  • ffmpeg4.2.x

  • ndk r21

编译过程

下载ffmpeg

  • 用git下载,这样下载到的是最新版的,我当时最新版是4.2.X
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
  • 下载完后打开ffmpeg中的configure文件,搜索android关键字,可以发现如下代码
set_default target_os
if test "$target_os" = android; then
    cc_default="clang"
fi

ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
cxx_default="${cross_prefix}${cxx_default}"
nm_default="${cross_prefix}${nm_default}"
pkg_config_default="${cross_prefix}${pkg_config_default}"
if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
    ranlib_default="${cross_prefix}${ranlib_default} -D"
else
    ranlib_default="${cross_prefix}${ranlib_default}"
fi
strip_default="${cross_prefix}${strip_default}"
windres_default="${cross_prefix}${windres_default}"
  • 我们可以看到当指定target_os为android,cc默认用的是clang编译,而且最后的cc_default都会加上前缀${cross_prefix}的值,其他的还有cxx,nm,ar,ranlib,strip等
  • 这里顺便说下我的目录结构,我在ffmpeg目录中创建了build-android/build-android.sh脚本,用于编译
-ffmpeg
	- ffbuild
		- config.log
		- ... 
	- configure
	- ...
	- build-android
		- build-android.sh

下载ndk

  • 用wget下载ndk r21
  • 如果没有wget就安装一下,ubuntu下用 apt install wget<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值