这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战
软硬件环境
- ubuntu 18.04 64bit
- NDK r15c
- ffmpeg git latest
- MI MIX 2S
NDK安装
下载 NDK 工具包, developer.android.com/ndk/downloa…,解压之后放到某个路径下,我这里是 /home/xugaoxiang/Tools/NDK/
然后设置2个环境变量
export ANDROID_NDK=/home/xugaoxiang/Tools/NDK/android-ndk-r15c
export SYSROOT=$ANDROID_NDK/platforms/android-21/arch-arm
或者将命令写入文件 ~/.bashrc,不用每次都手动设置
安装独立工具链
利用 NDK 工具包中自带的安装脚步安装独立的工具链,当然也可以使用 NDK 包下的工具链,本文也是用的 NDK 下的。那为什么要提这个呢?独立工具链的好处,是可以根据自己的需要和编译的目标安装,一次安装,永久使用
$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --install-dir=$ANDROID_NDK/../toolchains/21-4.9 --platform=android-21 --toolchain=arm-linux-androideabi-4.9
下载ffmpeg最新的源码
使用 git 下载源码
git clone https://git.ffmpeg.org/ffmpeg.git
编译参数
下面是 ffmpeg 常用的编译参数,可以根据自己的实际情况做修改,比如对 x264、x265、aac 等的支持
cd ffmpeg
./configure --arch=arm --cpu=armv7-a --cross-prefix="$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-" --sysroot=$SYSROOT --target-os=android --prefix=$PREFIX --disable-static --enable-shared --disable-asm --disable-doc --libdir=$PREFIX/libs/armeabi-v7a --incdir=$PREFIX/includes/armeabi-v7a --pkgconfigdir=$PREFIX/pkgconfig/armeabi-v7a
这里的 $PREFIX 自行指定,就是 ffmpeg 安装的目录
编译安装
配置完后,就可以进行编译和安装了
make
make install
编译完成后会在ffmpeg/android-build下生成bin、includes、libs等目录
源码下载
完整的工程放在了 github 上, github.com/xugaoxiang/…,上述步骤都写在了一个脚本里便于操作