注意:此方法在windows平台上使用MSYS环境不可行。并且NDK版本变化快,仅供参考
改良自博客 原文 毛毛v5 ffmpeg android ndk编译,还是用的gcc,不会配置clang版的
编译环境
1 Ubuntu 64位(2020/5/19更新:windows环境下,安装自带linux子系统 ubuntu测试成功)
2 NDK r19c
3 FFmpeg 4.1.3 源码 (可以不提前下载,2020/5/19更新:4.2.2版本测试成功)
4 x264源码(可以不提前下载,2020/5/19更新:最新版本测试成功)
最近在从源码编译视频框架,但网上很多脚本都是两三年前的,不适用于最近的版本ffmpeg ,或者只针对特定cpu架构的。
编译过程 ,整个过程就编辑3个脚本文件即可。
1 下载NDK r19c (我试过 其他版本的NDK,无法完成整个过程)
1 编辑 安卓NDK工具链脚本。找一个目录 终端进入 键入 touch make_android_toolchain.sh ,创建一个脚本。文本编辑器进行编辑 输入下面的内容
#!/bin/bash
#NDK目录,你要改成自己的ndk解压缩后所在的目录
export NDK_HOME=/home/akbot/Android/android-ndk-r19c
#生成交叉编译链工具
toolchain=${NDK_HOME}/build/tools/make-standalone-toolchain.sh
#生成交叉编译链保存在当前目录子文件夹android-toolchain
install_root=`pwd`/android-toolchain-r19
#生成32位库最低支持到android4.3,64位库最低支持到android5.0
platforms=(
"android-18"
"android-18"
"android-21"
"android-18"
"android-21"
)
#支持以下5种cpu框架
archs=(
"arm"
"arm"
"arm64"
"x86"
"x86_64"
)
#cpu型号
abis=(
"armeabi"
"armeabi-v7a"
"arm64-v8a"
"x86"
"x86_64"
)
echo $NDK_HOME
echo "安装在目录:$install_root"
num=${#abis[@]}
for ((i=0; i<num; i++))
do
bash $toolchain --arch=${archs[i]} --platform=${platforms[i]} --abis=${abis[i]} --install-dir=$install_root/${abis[i]}
done
这个脚本是使用NDK自带的工具链生成工具生成编译所需要的命令行工具集,真正做编译链接流程。
2 接着在相同文件夹下创建第二个脚本,编译x264库。终端打开当前目录 输入 touch android_build_x264.sh 创建脚本 ,用文本编辑器打开
#!/bin/bash
ROOT=`pwd`/
#配置交叉编译链,未生成交叉编译链请参考https://github.com/cwj2014/android_toolchain
export TOOL_ROOT=$ROOT/android-toolchain-r19
#五