FFmpeg最新版本4.1.3打so包(.a包)总结

环境:

1.编译环境Ubuntu 64位

2.ndk版本19c

3.FFmpeg版本4.1.3

脚本:

set -x

API=14

NDK=/home/bobby/Downloads/android-ndk-r17c

SYSROOT=$NDK/platforms/android-$API/arch-arm/

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

CPU=armv7-a

PREFIX=$(pwd)/android/$CPU

_one()

{

./configure \

--prefix=$PREFIX \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffplay \

--disable-ffprobe \

--disable-symver \

--disable-ffmpeg \


--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--target-os=android \

  --arch=arm \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a -isysroot $NDK/sysroot" \

--enable-neon

make clean all

make

make install

}

_one

问题总结:

1.编译失败不是网上说的各种FFmpeg和NDK版本问题,本人亲自踩过各种坑,大厂的东西不用怀疑,出问题就是在脚本上面,上面的脚本适用于打包Android环境下的so包

2.如果遇到编译失败,首先请检查你的shell脚本是否正确,先吐槽下目前网上的编译总结版本并不多,基本上雷神的版本占了6成以上,如果你遇到了编译的时候提示XXX.h找不到等问题,请在–extra-cflags中添加 “-isysroot $NDK/sysroot”即可

3.上面脚本打的是so包,如果想要.a包,请把disable-static换成disable-shared,enable-shared换成enable-static,具体编译规则最后总结会单独提出总结

4.FFmpeg的configure看情况自己去调整,不要一股脑照抄,抄来的并不一定适合

PS:如果有其他问题请在留言区提问交流

脚本规则:

1.--prefix=$PREFIX \  输出编译路径

2. --enable-shared \  --disable-static \  输出编译so包还是.a包(.a包是静态static,so包是动态shared),根据情况自行调整

3.--target-os=android \  编译输出运行的环境,网上大多数都是Linux,根据情况自己写需要编译后运行的环境

上面3条是相对比较重要的,下面不编序号是可选,根据自己情况自行增加

–enable-small        optimize for size instead of speed,默认开启

–disable-programs    do not build command line programs 去掉这个可以较大程度减少FFmpeg的大小

–disable-avdevice     disable libavdevice build  可以根据需求自行减少编译的库以便减少工程大小,FFmpeg很多库文件自行找disable的情况,这里只是抛个砖

如果想要更多更全的说明,请-help获取官方最权威的内容,或者自行查找FFmpeg的configure的编译规则

你可能感兴趣的:(FFmpeg最新版本4.1.3打so包(.a包)总结)