1.下载ffmpeg的源代码
2.新建脚本编译文件build_android.sh,如果要编译其他cpu格式,修改cpu处的赋值即可
#!/bin/bash
make clean
# NDK的路径,根据自己的安装位置进行设置
export NDK=/home/gjh/android-ndk-r10e
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#配置工具链
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
3.修改源代码中的configure文件,目的是为了后续脚本生成带so文件的编译二进制文件
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)'
3.利用命令行安装编译文件和dos2unix文件,并修改编译脚本和configure的权限,依次打入下列的代码即可
sudo apt-get install bison gcc-multilib g++-multilib
sudo apt install dos2unix
chmod +x ./build_android.sh
chmod +x ./configure
dos2unix ./build_android.sh
dos2unix ./configure
4.执行脚本编译文件,如果没有执行第三步直接跑的话可能会在命令行中找不到这个脚本文件或者执行无效。照例在命令行中依次执行下面3行代码,当然有些脚本直接在脚本文件后全执行了还加上多线程,这个自己看着办。
./build_android.sh
make
make install
5.执行结束后,如果能在ffmepg源代码文件夹中看到android文件夹就算编辑成功了。
如果在第四部中报了下面的异常也没关系,不影响最终的编译结果。
arm-linux-androideabi-pkg-config not found