Android 下FFmpeg打包so教程

1,准备工作

系统:ubuntu

下载地址:https://www.ubuntu.com/download

Ndk : 本教程使用android-ndk-r12b

下载地址:http://www.androiddevtools.cn/

FFmpeg

下载地址http://ffmpeg.org/download.html

如图:

%e5%9b%be%e7%89%871

 

Ndk和FFmpeg下载完成后,解压在Home目录,如上图

2,修改FFmpeg-3.1.5目录下的configure文件

%e5%9b%be%e7%89%872

 

把黄色选中部分修改为:

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,编写以下脚本

多个库脚本

############################################################

#清除上次编译的东西

make clean

#配置NDK路径

export NDK=/home/zhaoyu/android-ndk-r12b

#配置工具链

export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt

#配置平台

export PLATFORM=$NDK/platforms/android-14/arch-arm

#配置编译好了之后的文件输出目录,$(pwd)当前目录下

export PREFIX=$(pwd)/android/

build_one(){

./configure –target-os=linux –prefix=$PREFIX \

–enable-cross-compile \

–enable-runtime-cpudetect \

–disable-asm \

–arch=arm \

–cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \

–cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \

–disable-stripping \

–nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \

–sysroot=$PLATFORM \

–enable-gpl –enable-shared –disable-static –enable-nonfree –enable-version3 –enable-small \

–enable-zlib –disable-ffprobe –disable-ffplay –disable-ffmpeg –disable-ffserver –disable-debug \

–extra-cflags=”-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a”

}

build_one

#4线程编译

make -j4

make install

################################################################

 

单个库脚本

########################################################

#清除上次编译的东西

make clean

#配置NDK路径

export NDK=/home/zhaoyu/android-ndk-r12b

#配置工具链

export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt

#配置平台

export PLATFORM=$NDK/platforms/android-14/arch-arm

#配置编译好了之后的文件输出目录,$(pwd)当前目录下

export PREFIX=$(pwd)/android/

build_one(){

./configure –target-os=linux –prefix=$PREFIX \

–enable-cross-compile \

–enable-runtime-cpudetect \

–disable-asm \

–arch=arm \

–cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \

–cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \

–disable-stripping \

–nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \

–sysroot=$PLATFORM \

–enable-gpl –enable-static –disable-shared –enable-nonfree –enable-version3 –enable-small \

–enable-zlib –disable-ffprobe –disable-ffplay –disable-ffmpeg –disable-ffserver –disable-debug \

–extra-cflags=”-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a”

}

build_one

 

#4线程编译

make -j4

make install

 

$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -Bsymbolic –whole-archive –no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavfilter/libavfilter.a libswresample/libswresample.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a libpostproc/libpostproc.a libavdevice/libavdevice.a -lc -lm -lz -ldl -llog –dynamic-linker=/system/bin/linker $PREBUILT/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a

########################################################

 

以上#线内的内容任意一个,保存为build_ffmpeg.sh复制到ffmpeg根目录下

并在根目录下创建android文件夹用于存放生成的so库

如下图:

%e5%9b%be%e7%89%873

 

 

4,运行脚本,生成so

使用命令行进入ffmpeg目录,执行 build_ffmpeg.sh脚本

cd ffmpeg-3.1.5

./build_ffmpeg.sh

%e5%9b%be%e7%89%874

如图:

%e5%9b%be%e7%89%875

之后开始编译

 

脚本执行完成会在android目录下生成对应的so文件

如图(多so版):

%e5%9b%be%e7%89%876

单so版,如下图

%e5%9b%be%e7%89%877

编译后so下载地址:

http://download.csdn.net/detail/zhaoyu813113552/9665323

发表评论