ffmpeg静态库的裁剪

通过裁剪ffmpeg源码,可以生成满足特定需求的小型静态库。本文提供了一个shell脚本,用于编译并裁剪ffmpeg,以减小库的大小。裁剪后,例如libavcodec.a仅2MB。为了支持h264和aac编码,还需要编译x264和vo-aacenc源码。
摘要由CSDN通过智能技术生成

直接对ffmpeg的源码进行编译链接生成的静态库非常大,仅仅avcodec就有几十兆。因此根据我们自己的需求对ffmpeg进行裁剪是非常必要的。

先不说具体的,直接上代码。在ffmpeg源码的根目录下新建shell脚本,命名为ffmpeg_small(随便起的),然后把下面的内容复制进去,修改执行权限,然后执行,大概十多分钟后就可以得到裁剪后的ffmpeg静态库啦。经过验证,生成的libavcodec.a仅有2MB,libavdevice仅有7.5KB,libavfilter仅有192.4KB,libavformat.a仅有450.2KB,libavutil为298.2KB。

另外需要说明的是,为了使得生成的静态库可以对视频进行h264编码,对音频进行aac编码,我们需要对ffmpeg添加x264和aac支持,因此需要下载编译x264和vo-aacenc的源码。x264源码从git上下载就行,vo-aacenc可以在bitbucket下载:vo-aacenc源码下载

#!/bin/sh
./configure --enable-gpl --enable-nonfree --enable-version3 --enable-small\
 --disable-encoders --enable-libx264 --enable-libvo-aacenc --enable-encoder=libx264 --enable-encoder=libvo_aacenc\
 --disable-muxers --enable-muxer=mov --enable-muxer=mp4 --enable-muxer=avi\
 --disable-decoders --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=h264 --enable-decoder=mpeg4\
 --disable-filters --enable-filter=anull --enable-filter=null --enable-filter=aresample --enable-filter=pad --enable-filter=scale --enable-filter=overlay --enable-filter=amix --enable-filter=aresample\
 --disable-demuxers --enable-demuxer=h264 --enable-demuxer=avi --enable-demuxer=mpc --enable-demuxer=mov\
 --disable-parsers --enable-parser=aac --enable-parser=h264\
 --disable-protocols --enable-protocol=file\
 --disable-bsfs --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb\
 --disable-indevs\
 --disable-outdevs --disable-ffprobe --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-debug

make 
sudo make install


我们可以比较./configure之后输出的信息来判断我们到底裁剪到了什么东西。

如果我们不进行裁剪,直接./configure 输出的结果如下:

我们可以看到不管是decoder还是encoder或者filter或者protocal我们都Enable了一大堆,在实际应用中我们完全不需要这么全面的库。

<pre name="code" class="html">nstall prefix            /usr/local
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
yasm                      yes
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
AVX enabled               yes
XOP enabled               yes
FMA3 enabled              yes
FMA4 enabled              yes
i686 features enabled     yes
CMOV is fast              no
EBX available             yes
EBP available             yes
debug symbols             yes
strip symbols             yes
optimize for size         no
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
new filter support        yes
network support           yes
threading support         pthreads
safe bitstream reader     yes
SDL support               no
opencl enabled            no
texi2html enabled         no
perl enabled              yes
pod2man enabled           yes
makeinfo enabled          no
makeinfo supports HTML    no

External libraries:
iconv

<strong><span style=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值