ffmpeg静态库的裁剪

直接对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源码下载。

[html] view plain copy
  1. #!/bin/sh  
  2. ./configure --enable-gpl --enable-nonfree --enable-version3 --enable-small\  
  3.  --disable-encoders --enable-libx264 --enable-libvo-aacenc --enable-encoder=libx264 --enable-encoder=libvo_aacenc\  
  4.  --disable-muxers --enable-muxer=mov --enable-muxer=mp4 --enable-muxer=avi\  
  5.  --disable-decoders --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=h264 --enable-decoder=mpeg4\  
  6.  --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\  
  7.  --disable-demuxers --enable-demuxer=h264 --enable-demuxer=avi --enable-demuxer=mpc --enable-demuxer=mov\  
  8.  --disable-parsers --enable-parser=aac --enable-parser=h264\  
  9.  --disable-protocols --enable-protocol=file\  
  10.  --disable-bsfs --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb\  
  11.  --disable-indevs\  
  12.  --disable-outdevs --disable-ffprobe --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-debug  
  13.   
  14. make   
  15. sudo make install  
我们可以比较./configure之后输出的信息来判断我们到底裁剪到了什么东西。

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

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


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

只需要rtsp的我的裁剪

./configure --enable-gpl --enable-nonfree --enable-small --disable-encoders  --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 --enable-network --disable-doc --disable-avdevice --enable-demuxer=rtsp --enable-static --disable-shared --enable-pic --cpu=cortex-a9 --cross-prefix=arm-hisiv200-linux- --cc=arm-hisiv200-linux-gcc --as=arm-hisiv200-linux-gcc --host-cc=arm-hisiv200-linux-gcc --arch=arm --target-path=output --target-os=linux --prefix=`pwd`/../output --extra-cflags="-march=armv7-a -mcpu=cortex-a9"

你可能感兴趣的:(ffmpeg静态库的裁剪)