编译前准备
编译环境:Ubuntu16,可自行下载VMWare最新版并百度永久许可证或在服务器上安装Ubuntu
ffmpeg源码:ffmpeg4.2.2
NDK下载:Android NDK r21e
有条件的最好还是在Liunx平台下编译吧,Windows平台下编译坑更多,文章末尾有Github源码可自取
开始编译
1.解压NDK,执行 unzip android-ndk-r21e-liunx-x86_64.zip
如果提示没有unzip,执行此命令安装 sudo apt-get install unzip
2.解压ffmepg,tar -xvjf ffmpeg-4.2.2.tar.bz2
3.进入ffmpeg4.2.2目录,修改根目录下的 configure 文件
搜索 LIB_INSTALL_EXTRA_CMD
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
替换为
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
此步骤主要是将so命名为Android通用的so名称
4.在ffmpeg下创建文件android_build.sh脚本文件,此脚本文件用于配置、执行编译,根据需求进行配置,网上的配置均有不同,以实际需要为准,将以下代码copy到android_build.sh脚本文件中,执行 sudo sh android_build.sh
#!/bin/bash
API=21
#arm64 x86 x86_64 <----> aarch64 i686 x86_64
ARCH=arm64
ARCH2=aarch64
PREFIX=../out-ffmpeg/$ARCH
#此处路径替换为当前NDK路径
TOOLCH