ffmpeg编译android的so库

来源:互联网 发布:传奇技术联盟网络磁盘 编辑:程序博客网 时间:2024/05/21 06:44

一、编译环境

本人编译环境是在mac下的,此方法同样适用于linux

除了系统要求,还要ndk,大家去下一个mac版的,如果不想找的话---https://pan.baidu.com/s/1i5utCkX,直接解压出来就行

二、编译ffmpeg

如果大家需要编译的是ffmpeg-3.0版本,则可去https://github.com/zhu12345618/ffmpeg-android直接下载,解压后,cd到解压出来的目录里,里面会有build_android.sh文件。

里面有build_android.sh文件,这个是本人简化的脚本。

这里要说一下这个脚本的原作者链接https://pan.baidu.com/s/1nuqKjjF

build_android_full.sh是原作者的未简化脚本。

cd到解压出来的目录后执行./build_android.sh或者./build_android_full.sh命令。

一键编译!完!


如果编译的不是ffmpeg-3.0版本,则需要去官网下载相应的ffmpeg版本,把下面的脚本(脚本名为build_android.sh)放到下载下来的根目录里,再在根目录新建ffmpegtemp文件夹。

#!/bin/bashexport TMPDIR=/Users/zhufu/ffmpeg-3.0/ffmpegtemp #这句很重要,不然会报错 unable to create temporary file in# NDK的路径,根据自己的安装位置进行设置NDK=/Users/zhufu/android-ndk-r12b# 编译针对的平台,可以根据自己的需求进行设置# 这里选择最低支持android-14, arm架构,生成的so库是放在# libs/armeabi文件夹下的,若针对x86架构,要选择arch-x86PLATFORM=$NDK/platforms/android-14/arch-arm# 工具链的路径,根据编译的平台不同而不同# arm-linux-androideabi-4.9与上面设置的PLATFORM对应,4.9为工具的版本号,# 根据自己安装的NDK版本来确定,一般使用最新的版本TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64function build_one{./configure \    --prefix=$PREFIX \    --enable-shared \    --enable-demuxer \    --disable-static \    --disable-programs \            --disable-encoders \    --disable-ffmpeg \    --disable-ffplay \    --disable-ffprobe \    --disable-ffserver \    --disable-avfilter \    --disable-swscale \    --disable-muxers \                    --disable-devices \    --disable-filters \    --disable-parsers \    --disable-doc \    --disable-postproc \    --disable-w32threads \    --disable-avdevice \        \    --disable-everything \    --enable-protocol=pipe \        --enable-hwaccels \    --enable-memalign-hack \    --enable-asm \    --enable-pthreads \    --enable-network \    \    --enable-decoder=h264 \    --enable-decoder=aac \    \    --enable-demuxer=flv \    --enable-demuxer=mov \    \    --enable-protocol=rtmp \    --enable-protocol=http \    --enable-protocol=rtsp \    \    --disable-zlib \    --disable-bzlib \    --enable-pic \    --disable-symver \    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \    --target-os=linux \    --arch=arm \    --enable-cross-compile \    --sysroot=$PLATFORM \    --extra-cflags="-I./include" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install}# arm v7vfpCPU=armvOPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "PREFIX=./android/$CPU-vfpADDITIONAL_CONFIGURE_FLAG=build_one# CPU=armv# PREFIX=$(pwd)/android/$CPU# ADDI_CFLAGS="-marm"# build_one#arm v6#CPU=armv6#OPTIMIZE_CFLAGS="-marm -march=$CPU"#PREFIX=./android/$CPU #**********/=#build_one#arm v7vfpv3# CPU=armv7-a# OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "# PREFIX=./android/$CPU# ADDITIONAL_CONFIGURE_FLAG=# build_one#arm v7n#CPU=armv7-a#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"#PREFIX=./android/$CPU #ADDITIONAL_CONFIGURE_FLAG=--enable-neon#build_one#arm v6+vfp#CPU=armv6#OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"#PREFIX=./android/${CPU}_vfp #ADDITIONAL_CONFIGURE_FLAG=#build_one
和刚刚一样,执行./build_android.sh或者./build_android_full.sh命令。完!

同时,脚本里也有注释,大家可以结合博文和注释去理解。

原创粉丝点击