环境
操作系统:ubuntu 16.04LTS x86_64
ndk版本:android-ndk-r19
FFmpeg版本:ffmpeg-3.2.2
配置NDK和下载FFmpeg
安装好android studio并在tools->Android->SDK Manager 中安装ndk.
FFmpeg 到官网 http://ffmpeg.org/ 下载相应版本的源码。
编译
解压FFmpeg源码包后,修改ffmpeg-x.x.x/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)'
这样编译出来的so命名才符合android的使用。
在ffmpeg-x.x.x文件夹下创建相应的脚本文件 build_android_arm.sh、build_android_x86.sh、build_android_arm.sh。
#!/bin/bash
export TMPDIR=$HOME/temp
NDK=$HOME/Android/Sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=$HOME/ffmpeg-android/arm/
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
这里只是用了arm的平台,如果需要mips,或者x86需要修改build.sh脚本的arch和路径这里不赘述了。
chmod o+x build_android_arm.sh ,然后 ./build_android_arm.sh 开始编译。小等片刻,你就能在PREFIX所标示的路径下看到 /include 和 /lib两个文件夹,编译完成,接下来就可以用 android studio 创建工程了。
下载地址