1 、安装unbuntu14环境
2 、安装ndk
LINUX环境下的ndk(http://blog.csdn.net/gyh198/article/details/75036686), 如果下载的ndk文件时xxx.bin格式,终端直接进入该文件所在的目录。
chmod +x ./xxx.bin
./xxx.bin
执行完毕后就可以生成可正常使用的ndk环境
3、下载ffmpeg源码
去ffmpeg官网下载源码,解压至ndk所在的目录
以上三步操作的结果如下图:
4、编译
进入ffmpeg-3.0.10目录
(1) 修改configure文件
替换以下内容:
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)'
(2)构建脚本(build_android.sh)
#!/bin/bash
NDK=/home/wcf/Downloads/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86
TOOLCPU=arm-linux-androideabi
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
ADDI_LDFLAGS="-lm -lz -Wl,-soname=libffmpeg.so,-z,noexecstack"
function build_one
{
./configure --target-os=linux --prefix=$PREFIX\
--enable-cross-compile\
--enable-runtime-cpudetect\
--disable-asm\
--arch=$CPU\
--cc=$TOOLCHAIN/bin/$TOOLCPU-gcc\
--cross-prefix=$TOOLCHAIN/bin/$TOOLCPU-\
--enable-stripping\
--nm=$TOOLCHAIN/bin/$TOOLCPU-nm\
--sysroot=$SYSROOT\
--enable-gpl --enable-shared --disable-static --enable-small\
--enable-zlib --disable-ffprobe --disable-ffplay --disable-ffmpeg\
--disable-ffserver\
--extra-cflags="-I$SYSROOT/usr/include"\
--extra-ldflags="$ADDI_LDFLAGS"\
$ADDITIONAL_CONFIGURE_FLAG
}
build_one
(3)终端执行构建
chmmod +x build_android.sh
make
make install
注意:32位的linux无法编译64位的so文件,ubuntu和ndk位数必须一致