Android版ffmpeg的编译

690 阅读1分钟

这是我参与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 常用的编译参数,可以根据自己的实际情况做修改,比如对 x264x265aac 等的支持

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下生成binincludeslibs等目录

android_ffmpeg

源码下载

完整的工程放在了 github 上, github.com/xugaoxiang/…,上述步骤都写在了一个脚本里便于操作

参考资料

  1. git.ffmpeg.org/ffmpeg.git
  2. trac.ffmpeg.org/wiki/Compil…
  3. github.com/WritingMind…
  4. developer.android.com/ndk/guides/…
  5. medium.com/@karthikcod…