使用ffmpeg或者libav进行开发时,大部分情况下功能需要比较单一,比如是做播放器时只需要解复用和解码模块,甚至是只需要一种音频或者视频的解码器,或者需要使用ffmpeg进行指定格式的编码、转码等,这时如果不对ffmpeg进行定制,而直接从官网上进行下载的话,可能需要几十M的硬盘空间,为了有利于产品的瘦身,需要编译出符合自身需要的ffmpeg。
比如在windows下编译ffmpeg的configure参数(MinGW):
./configure
--enable-shared --enable-gpl --enable-version3 --disable-doc --disable-ffplay
--disable-ffprobe --disable-ffserver --disable-network --disable-avfilter
--enable-memalign-hack --disable-everything --enable-decoder=h264
--enable-decoder=mp3 --enable-decoder=aac --disable-debug --enable-pthreads
--disable-filters --extra-cflags="-I/C/MinGW/include"
--extra-ldflags="-L/C/MinGW/lib"
这里我只需要h.264、mp3和aac三种解码器,所以使用--enable-decoder=h264
--enable-decoder=mp3 --enable-decoder=aac进行激活,而其它的则全部disbale,这样我自己编译出的ffmpeg动态库就很小了,如下图:
其实通过configure参数,还可以编译出更小的动态库,不过目前的这种大小已经够我们使用了。