使用ffmpeg或者libav进行开发时,大部分状况下功能须要比较单一,好比是作播放器时只须要解复用和解码模块,甚至是只须要一种音频或者视频的解码器,或者须要使用ffmpeg进行指定格式的编码、转码等,这时若是不对ffmpeg进行定制,而直接从官网上进行下载的话,可能须要几十M的硬盘空间,为了有利于产品的瘦身,须要编译出符合自身须要的ffmpeg。 windows
这里我只须要h.26四、aac两种种编解码器,因此使用--enable-decoder=h264 --enable-decoder=aac进行激活,而其它的则所有disbale,这样我本身编译出的ffmpeg动态库就很小了,post
其实经过configure参数,还能够编译出更小的动态库,不过目前的这种大小已经够咱们使用了。性能
目前windows使用msys编译,最精简的编译命令为:编码
./configure --enable-nonfree --enable-avcodec --enable-avformat --enable-swscale --enable-avutil --enable-shared --disable-static --enable-gpl
--enable-version3 --disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --disable-avfilter --enable-memalign-hack
--disable-everything --disable-stripping
--enable-decoder=h264 --enable-decoder=libfdk_aac --enable-encoder=libx264 --enable-encoder=libfdk_aac --enable-libx264 --enable-libfdk-aac
--disable-debug --enable-pthreads --disable-filters --disable-bzlib --disable-iconv --disable-avdevice --disable-postproc --enable-avresample
--disable-pthreads --disable-os2threads --disable-network --disable-dct --disable-dwt --disable-error-resilience --disable-lsp --disable-lzo
--disable-mdct --disable-rdft --disable-fft --enable-small
--disable-safe-bitstream-reader --extra-cflags='-IE:/MinGW/msys/1.0/local/include' --extra-ldflags='-LE:/MinGW/msys/1.0/local/lib -static-libgcc'debug
注:--enable-small可能会影响性能(configure --help),建议移动端下不要加上此参数!code
The --enable-memalign-hack option is necessary for FFmpeg to compile on Windows.orm
--extra-ldflags=-static-libgcc视频
其中--extra-ldflags中的 -static-libgcc配置去除libgcc_s_dw2-1.dll的依赖server