一、下载FFMPEG
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
二、修改configure配置文件
解压好ffmpeg后,修改ffmpeg的configure文件。
因为android只能加载.so结尾的动态库,不能识别如.so.57结尾的
将:
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)'
进入ffmpeg目录下终端输入命令:
./configure
注意如果不执行这一步,后面编译时会报错
Unknown option "--disable-ffserver"...
三、编写编译脚本
创建 build_android.sh文件,并将以下内容复制到此文件:
#!/bin/bash
cd ffmpeg
make clean
export TMPDIR=/Users/huangyoubin/development/fflib/
export NDK=/Users/huangyoubin/Library/Android/sdk/ndk/
export SYSROOT=$NDK/platforms/android-21/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/
export CPU=arm
export PREFIX=/Users/huangyoubin/development/fflib/
export ADDI_CFLAGS="-marm"
function build_one {
./configure \
--target-os=linux \
--prefix=$PREFIX \
--arch=arm \
--enable-shared \
--enable-gpl \
--enable-cross-compile \
--disable-static \
--disable-yasm \
--disable-symver \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j8
make install
}
build_one
上述脚本需要根据自身实际安装的目录进行一些修改
保存后执行:
./build_android.sh
等待一段时间后 需要的so文件就生成在对应目录
网友评论