软硬件环境
- ubuntu 18.04 64bit
- NDK r15c
- ffmpeg git latest
- MI MIX 2S
NDK安装
下载NDK
工具包, https://developer.android.com/ndk/downloads/,解压之后放到某个路径下,我这里是/home/xugaoxiang/Tools/NDK/
安装独立工具链
利用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
设置环境变量
需要设置2个环境变量
export ANDROID_NDK=/home/xugaoxiang/Tools/NDK/android-ndk-r15c
export SYSROOT=$ANDROID_NDK/platforms/android-21/arch-arm
下载ffmpeg最新的源码
使用git
下载源码
git clone https://git.ffmpeg.org/ffmpeg.git
编译参数
跟ffmpeg
自身功能的编译参数,可以根据实际情况修改,比如对x264
、x265
的支持等
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
编译安装
make
make install
编译完成后会在ffmpeg/android-build
下生成bin
、includes
、libs
等目录
源码下载
完整的工程放在了github
上, https://github.com/xugaoxiang/ffmpeg_for_android,上述步骤都写在了一个脚本里便于操作