目录

前言

一、编译出来的库为什么大?

二、去掉多余的格式

三、--enable-small


前言

之前合成Mp4的项目功能已经完成了,在实际测试的时候发现一个问题,就是编译出来的几个库文件加起来太大了,很占空间,所以想优化压缩一下。

一、编译出来的库为什么大?

FFmpeg的功能实在是太强大,支持视频的编码、解码、合成、分离、转换格式等等,而且几乎支持所有的视频和音频的编码格式,大部分人使用只能用到其中的一部分功能。在编译的时候,可以通过编译选项查看到当前版本支持的编码格式,下面是查看支持对应功能信息的指令

Help options:--help                   print this message--quiet                  Suppress showing informative output--list-decoders          show all available decoders--list-encoders          show all available encoders--list-hwaccels          show all available hardware accelerators--list-demuxers          show all available demuxers--list-muxers            show all available muxers--list-parsers           show all available parsers--list-protocols         show all available protocols--list-bsfs              show all available bitstream filters--list-indevs            show all available input devices--list-outdevs           show all available output devices--list-filters           show all available filters

比如查看解码支持的格式:

zqq@zqq-virtual-machine:~/share/work/3rdlib/FFmpeg-n3.3.1_bak$ ./configure --list-decoders
aac                     als                     dpx                     h264                    loco                    msmpeg4v3               pcm_zork                snow                    vmnc
aac_at                  amr_nb_at               dsd_lsbf                h264_crystalhd          m101                    msrle                   pcx                     sol_dpcm                vorbis
aac_fixed               amrnb                   dsd_lsbf_planar         h264_cuvid              mace3                   mss1                    pgm                     sonic                   vp3
aac_latm                amrwb                   dsd_msbf                h264_mediacodec         mace6                   mss2                    pgmyuv                  sp5x                    vp5
aasc                    amv                     dsd_msbf_planar         h264_mmal               magicyuv                msvideo1                pgssub                  speedhq                 vp6
ac3                     anm                     dsicinaudio             h264_qsv                mdec                    mszh                    pictor                  srt                     vp6a
ac3_at                  ansi                    dsicinvideo             h264_vda                metasound               mts2                    pixlet                  ssa                     vp6f
ac3_fixed               ape                     dss_sp                  h264_vdpau              microdvd                mvc1                    pjs                     stl                     vp7
adpcm_4xm               apng                    dst                     hap                     mimic                   mvc2                    png                     subrip                  vp8
adpcm_adx               ass                     dvaudio                 hevc                    mjpeg                   mxpeg                   ppm                     subviewer               vp8_cuvid
adpcm_afc               asv1                    dvbsub                  hevc_cuvid              mjpeg_cuvid             nellymoser              prores                  subviewer1              vp8_mediacodec
adpcm_aica              asv2                    dvdsub                  hevc_mediacodec         mjpegb                  nuv                     prores_lgpl             sunrast                 vp8_qsv
adpcm_ct                atrac1                  dvvideo                 hevc_qsv                mlp                     on2avc                  psd                     svq1                    vp9
adpcm_dtk               atrac3                  dxa                     hnm4_video              mmvideo                 opus                    ptx                     svq3                    vp9_cuvid
adpcm_ea                atrac3al                dxtory                  hq_hqa                  motionpixels            paf_audio               qcelp                   tak                     vp9_mediacodec
adpcm_ea_maxis_xa       atrac3p                 dxv                     hqx                     movtext                 paf_video               qdm2                    targa                   vplayer
adpcm_ea_r1             atrac3pal               eac3                    huffyuv                 mp1                     pam                     qdm2_at                 targa_y216              vqa
adpcm_ea_r2             aura                    eac3_at                 iac                     mp1_at                  pbm                     qdmc                    tdsc                    wavpack
adpcm_ea_r3             aura2                   eacmv                   idcin                   mp1float                pcm_alaw                qdmc_at                 text                    webp
adpcm_ea_xas            avrn                    eamad                   idf                     mp2                     pcm_alaw_at             qdraw                   theora                  webvtt
adpcm_g722              avrp                    eatgq                   iff_ilbm                mp2_at                  pcm_bluray              qpeg                    thp                     wmalossless
adpcm_g726              avs                     eatgv                   ilbc_at                 mp2float                pcm_dvd                 qtrle                   tiertexseqvideo         wmapro
adpcm_g726le            avui                    eatqi                   imc                     mp3                     pcm_f16le               r10k                    tiff                    wmav1
adpcm_ima_amv           ayuv                    eightbps                indeo2                  mp3_at                  pcm_f24le               r210                    tmv                     wmav2
adpcm_ima_apc           bethsoftvid             eightsvx_exp            indeo3                  mp3adu                  pcm_f32be               ra_144                  truehd                  wmavoice
adpcm_ima_dat4          bfi                     eightsvx_fib            indeo4                  mp3adufloat             pcm_f32le               ra_288                  truemotion1             wmv1
adpcm_ima_dk3           bink                    escape124               indeo5                  mp3float                pcm_f64be               ralf                    truemotion2             wmv2
adpcm_ima_dk4           binkaudio_dct           escape130               interplay_acm           mp3on4                  pcm_f64le               rawvideo                truemotion2rt           wmv3
adpcm_ima_ea_eacs       binkaudio_rdft          evrc                    interplay_dpcm          mp3on4float             pcm_lxf                 realtext                truespeech              wmv3_crystalhd
adpcm_ima_ea_sead       bintext                 exr                     interplay_video         mpc7                    pcm_mulaw               rl2                     tscc                    wmv3_vdpau
adpcm_ima_iss           bmp                     ffv1                    jacosub                 mpc8                    pcm_mulaw_at            roq                     tscc2                   wmv3image
adpcm_ima_oki           bmv_audio               ffvhuff                 jpeg2000                mpeg1_cuvid             pcm_s16be               roq_dpcm                tta                     wnv1
adpcm_ima_qt            bmv_video               ffwavesynth             jpegls                  mpeg1_vdpau             pcm_s16be_planar        rpza                    twinvq                  ws_snd1
adpcm_ima_qt_at         brender_pix             fic                     jv                      mpeg1video              pcm_s16le               rscc                    txd                     xan_dpcm
adpcm_ima_rad           c93                     flac                    kgv1                    mpeg2_crystalhd         pcm_s16le_planar        rv10                    ulti                    xan_wc3
adpcm_ima_smjpeg        cavs                    flashsv                 kmvc                    mpeg2_cuvid             pcm_s24be               rv20                    utvideo                 xan_wc4
adpcm_ima_wav           ccaption                flashsv2                lagarith                mpeg2_mmal              pcm_s24daud             rv30                    v210                    xbin
adpcm_ima_ws            cdgraphics              flic                    libcelt                 mpeg2_qsv               pcm_s24le               rv40                    v210x                   xbm
adpcm_ms                cdxl                    flv                     libfdk_aac              mpeg2video              pcm_s24le_planar        s302m                   v308                    xface
adpcm_mtaf              cfhd                    fmvc                    libgsm                  mpeg4                   pcm_s32be               sami                    v408                    xl
adpcm_psx               cinepak                 fourxm                  libgsm_ms               mpeg4_crystalhd         pcm_s32le               sanm                    v410                    xma1
adpcm_sbpro_2           clearvideo              fraps                   libilbc                 mpeg4_cuvid             pcm_s32le_planar        scpr                    vb                      xma2
adpcm_sbpro_3           cljr                    frwu                    libopencore_amrnb       mpeg4_mediacodec        pcm_s64be               screenpresso            vble                    xpm
adpcm_sbpro_4           cllc                    g2m                     libopencore_amrwb       mpeg4_mmal              pcm_s64le               sdx2_dpcm               vc1                     xsub
adpcm_swf               comfortnoise            g723_1                  libopenh264             mpeg4_vdpau             pcm_s8                  sgi                     vc1_crystalhd           xwd
adpcm_thp               cook                    g729                    libopenjpeg             mpeg_vdpau              pcm_s8_planar           sgirle                  vc1_cuvid               y41p
adpcm_thp_le            cpia                    gif                     libopus                 mpeg_xvmc               pcm_u16be               sheervideo              vc1_mmal                ylc
adpcm_vima              cscd                    gsm                     libschroedinger         mpegvideo               pcm_u16le               shorten                 vc1_qsv                 yop
adpcm_xa                cyuv                    gsm_ms                  libspeex                mpl2                    pcm_u24be               sipr                    vc1_vdpau               yuv4
adpcm_yamaha            dca                     gsm_ms_at               libvorbis               msa1                    pcm_u24le               smackaud                vc1image                zero12v
aic                     dds                     h261                    libvpx_vp8              msmpeg4_crystalhd       pcm_u32be               smacker                 vcr1                    zerocodec
alac                    dfa                     h263                    libvpx_vp9              msmpeg4v1               pcm_u32le               smc                     vmdaudio                zlib
alac_at                 dirac                   h263i                   libzvbi_teletext        msmpeg4v2               pcm_u8                  smvjpeg                 vmdvideo                zmbv
alias_pix               dnxhd                   h263p

可以看到支持的格式很齐全,但是如果把这些都包含进去的话,编译出来的库会很大。所以可以只支持我们需要的格式就好了,把其他的一些可以关掉。

二、去掉多余的格式

Individual component options:--disable-everything     disable all components listed below--disable-encoder=NAME   disable encoder NAME--enable-encoder=NAME    enable encoder NAME--disable-encoders       disable all encoders--disable-decoder=NAME   disable decoder NAME--enable-decoder=NAME    enable decoder NAME--disable-decoders       disable all decoders--disable-hwaccel=NAME   disable hwaccel NAME--enable-hwaccel=NAME    enable hwaccel NAME--disable-hwaccels       disable all hwaccels--disable-muxer=NAME     disable muxer NAME--enable-muxer=NAME      enable muxer NAME--disable-muxers         disable all muxers--disable-demuxer=NAME   disable demuxer NAME--enable-demuxer=NAME    enable demuxer NAME--disable-demuxers       disable all demuxers--enable-parser=NAME     enable parser NAME--disable-parser=NAME    disable parser NAME--disable-parsers        disable all parsers--enable-bsf=NAME        enable bitstream filter NAME--disable-bsf=NAME       disable bitstream filter NAME--disable-bsfs           disable all bitstream filters--enable-protocol=NAME   enable protocol NAME--disable-protocol=NAME  disable protocol NAME--disable-protocols      disable all protocols--enable-indev=NAME      enable input device NAME--disable-indev=NAME     disable input device NAME--disable-indevs         disable input devices--enable-outdev=NAME     enable output device NAME--disable-outdev=NAME    disable output device NAME--disable-outdevs        disable output devices--disable-devices        disable all devices--enable-filter=NAME     enable filter NAME--disable-filter=NAME    disable filter NAME--disable-filters        disable all filters

编译选项中提供了disable所有的解码格式的选项 --disable-decoders ,我们就可以先把所以的解码选项都禁止掉,然后通过--enable-decoder=NAME 这个选项来添加你项目中用的编码格式,比如我的项目中用到了H264和AAC合成Mp4,那我的编译选项中就可以先禁止掉所有的decoders,demuxers,然后打开和ACC和H264相关的。我没有用到编码,所以encoders也可以关掉。类似的你也可以去尝试一下其他的功能选项。

./configure  --prefix=`pwd`/out               \--target-os=linux               \--enable-cross-compile          \--cc=arm-none-linux-gnueabi-gcc    \--cxx=arm-none-linux-gnueabi-g++    \--arch=arm                    \--disable-yasm                     \--disable-stripping            \--disable-asm                  \--enable-shared                \--disable-static               \--disable-encoders                 \--disable-decoders                 \--enable-decoder=aac              \--enable-decoder=aac_at       \--enable-decoder=h264             \--enable-decoder=h264_mediacodec  \--disable-demuxers                 \--enable-demuxer=aac          \--enable-demuxer=h264             \

我按照上面的脚本实际编译出来的话,库的体积比原来减小了将近2/3,优化效果还是很明显的。

三、--enable-small

FFmpeg还提供了一个选项来减小体积,就是--enable-small

--enable-small           optimize for size instead of speed

我们可以看到后面的注释,意思是这个选项是通过速度来换取大小,也就是说牺牲编码解码速度来换取库的体积的减小,这个就要看你实际的需求了,如果flash不是很紧张,或者通过其他的方式可以减小的话,就不用这个选项了,根据实际的项目进行权衡吧。我通过上面的前面的方式优化之后,已经不影响了,所以我没有加这个选项。

FFmpeg编译出来的库太大?试试这几招相关推荐

  1. 动图文件太大怎么办?一招教你在线压缩GIF图片

    在日常的生活和工作中,经常会用到图片来进行信息的传递和展示.如果使用动图GIF文件,但是文件太大,被平台限制,无法上传使用的话,怎样才能快速的解决这个问题呢?随着互联网的不断发展,科技的不断进步,可以 ...

  2. ffmpeg 编译后静态库链接失败

    :~$ gcc ./c/avio_ffmpeg.c -o ./c/avio_ffmpeg /tmp/cciJktYW.o:在函数'av_make_error_string'中: avio_ffmpeg ...

  3. web端引入字体库太大优化

    下载字体库HYLEMIAOTIJ.ttf 新建css.css文件在static目录 在根目录: 新建font.html文件 把css文件引入到html文件中 css.css文件内容: @font-fa ...

  4. Qt 静态编译后的exe太大, 可以这样压缩.

    1. 下载PECompact 下载地址:http://download.csdn.net/download/sniper_bing/7669247 ,  不行大家就去baidu搜索下载就可以了这个是绿 ...

  5. ubuntu下ffmpeg编译安装

    ubuntu下ffmpeg编译安装 解决库链接不上的问题 ubuntu下ffmpeg编译安装   1.ffmpeg是什么东西?相信很多人第一次接触这个东西,我先在这里做个简单的介绍. FFmpeg是一 ...

  6. ffmpeg库编译加文字_我自己的FFMpeg编译之路

    为了编译这个东西,快折腾了一个星期了.期间经历了很多痛苦的过程,今天我把整个过程,以及在这个过程的感悟写下来,以备日后查看,也希望能帮到一些像我一样的兄弟姐妹. 在这一个星期里前前后后加起来总共使用了 ...

  7. 视频文件太大?使用FFmpeg来无损压缩它

    咱们平时如果经常拍视频的话,都会遇到一个困境:视频文件太大了,存储的时候需要占用很多的空间.如果直接使用视频压缩工具来压缩码率的话,又会担心损失了视频的画质,这该怎么办呢? 这个时候,我们就可以使用f ...

  8. 如何将ffmpeg x264的动态库编译入Android7.1系统源码(详细步骤)

    0 前言 对于刚接触Android中ffmpeg的来说,ffmpeg的编译有很多坑,这些坑我都踩过一遍,而且网上文章鱼龙混杂写的太乱,不想太多人浪费时间在编译上,所以把成功的代码及编译步骤分享出来. ...

  9. linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

    1.下载ffmpeg源码,官网,我这里直接采用git 方式下载: 下载ffmpeg.png 终端输入git命令: 静静等待~ 最后下载的版本为3.4.6 . image.png 这里注意一下,刚开始我 ...

最新文章

  1. Windows server2012虚拟机 密码重置
  2. Centos6.5-----nagios快速安装编译配置文档-全部虚拟环境
  3. 张恩民 php,php100视频教程第11讲(制作PHP+MYSQL留言板 上)中,张恩民老师提到的php100-11.txt文档...
  4. stm32换芯片编译
  5. UITableView cell自定义视图中插入Table实现复杂界面
  6. Java性能问题定位
  7. C++程序员拼命工作却不顾身体,是不值得的!
  8. CCNA之单臂路由实验
  9. insert into 多张表_麦克维尔直流变频多联机弹簧阻尼减震器_淞江集团-李工
  10. 低代码的兴起:花更少的钱,赚更多的钱
  11. nodejs中的模块的理解
  12. Bitmap和Drawable的互相转换
  13. 计算几何-判断两条线段是否相交
  14. cad尺寸标注快捷键_CAD中还能这样快速标注尺寸?怪不得同事天天准时下班
  15. 把IE武装到牙齿,IE插件全攻略(转)
  16. 下载全球高清卫星影像地图
  17. java分割图片为九宫格
  18. 【自制编译器】(一)
  19. 腹板拼接宽度_钢结构工程部件拼接一般规定
  20. Docker磁盘空间满的解决办法

热门文章

  1. 计算机网络中的OSI模型和TCP/IP模型
  2. 安卓App版权申请流程
  3. mysql数据库误删后能恢复吗_MySQL 数据库误删除后的数据恢复
  4. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】
  5. OMAPL138的DSPLINK开发入门
  6. FileUriExposedException: file:////XXXXXXXX g exposed beyond app through ClipData.Item.getUri()问题的解决
  7. 网络分流器|网络分流器|网络分流采集器的应用领域
  8. iOS 审核总被拒?如何提升 iOS 审核通过率!
  9. 阿里云ACP级认证考试心得+过关经验
  10. 汽车VIN码与二手车市场