ffmpeg精简1

来源:互联网 发布:64式轻坦性能数据 编辑:程序博客网 时间:2024/05/18 18:17
http://blog.sina.com.cn/s/blog_73c85f0f0101dig8.html
ffmpeg编译以后的libavcodec.dll,可能会在10M以上。作为一个dll实在是太大了,因此瘦身也是一个重要的编译过程。

瘦身诀窍主要是2点:
1,只编译必要的编码解码器。
在./configure的时候,先把所有的encoders, encoders, muxers都disable掉。
这样能减掉libavcodec.dll大约6.5M的体积,从默认的12M瘦身到5.5M左右(ffmpeg1.0).
2,使用--enable-small选项。
能减掉大约3M的体积,从5M到大概1.94M(ffmpeg 1.0).

最后可用的configure参数大概是:
$ ./configure --disable-yasm --disable-static --enable-shared --disable-encoders
s --disable-decoders --disable-muxers --disable-demuxers --disable-parsers --di
sable-bsfs --disable-protocols --disable-filters --disable-avfilter --disable-s
wscale --disable-swresample --disable-avdevice --enable-small

这样子能把libavcodec.dll缩到大概2M左右。一般为了实际需要,还需要再加上一些encoder/decoder,当然加几个文件不会导致文件急剧膨胀。

仔细分析一下--enable-small的配置项,其实是在config.h里声称了CONFIG_SMALL选项,然后代码内根据CONFIG_SMALL做了一些调整,比如某些string类型就被省掉了,还有一些内置生成的table, 体积也被裁减掉了,用速度换体积。比如这里:
#if CONFIG_SMALL
#define CRC_TABLE_SIZE 257
#else
#define CRC_TABLE_SIZE 1024
#endif

总体上,干掉不需要的编码解码器,是没有什么犹豫的。对于--enable-small,这个优化其实是牺牲编码解码速度来换取动态库的瘦身,对于硬盘或者内存不是那么紧迫的应用,完全可以不打开。
原创粉丝点击