ffmpeg----configure参数配置说明

转自:https://blog.csdn.net/huweijian5/article/details/104369194

ffmpeg----configure参数配置说明

ffmpeg版本

  • ffmpeg4.2
  • 不同版本可能略有差异,实际上要以configure文件中说明的为准

配置说明

  • 一开始接触ffmpeg的configure感觉会有点迷茫,很多参数都不知道有什么值可以设置,其实configure文件就能解决绝大部分参数的疑惑,有时间建议通读一遍这个文件

注意

  • configure会在控制台输出编译的配置信息,此时一定要认真查看一下里面的信息,特别警告信息,因为你配置的一些选项可能由于条件不满足configure会自动关闭的,或者你把–fatal-warnings这个加上,让警告变成错误

七大库

  • ffmpeg总共有七大库,分别是avdevice,avcodec,avformat,swresample,swscale,postproc,avfilter,加上他们的共同依赖avutil,就算是八大库吧

  • 这八个默认都是开启的,因为avutil是最基本的,因此这个库必须有,其他七个都可以通过如下配置关闭

      --disable-avdevice       disable libavdevice build
      --disable-avcodec        disable libavcodec build
      --disable-avformat       disable libavformat build
      --disable-swresample     disable libswresample build
      --disable-swscale        disable libswscale build
      --disable-postproc       disable libpostproc build
      --disable-avfilter       disable libavfilter build
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 这几大库按需配置,为了减少体积,建议将不用的关闭掉,关闭的时候还要根据他们之间的依赖关系,这个依赖关系可以在源代码ffbuild/config.mak中看出,如图

  • 在这里插入图片描述

  • 举个例子,如果要使用avformat,那么就不能把avcodec关闭

–enable-gpl --enable-version3

  • ffmpeg默认许可证LGPL 2.1,如果需要加gpl的库需要使用gpl的许可证,例如libx264就是gpl的,如果需要加入libx264则需要–enable-gpl
  • 如果想更新许可证版本到3,那么就加入–enable-version3

–disable-everything

  • 这个选项相当于关闭了encoders,decoders,hwaccels,muxers,demuxers,parsers,bsfs,protocols,devices,indevs,outdevs,filters共9种组件;

  • 如果用户增加了这个选项,那么就需要手动打开所需的以上encoders,decoders等

  • 比如我只想编译h264的解码器和支持硬解,那么只需要如下即可,没有配置的都会关闭,只打开你所配置的

    ./configure --disable-everything --enable-decoder=h264 --enable-hwaccel=h264_dxva2
    
       
       
    • 1
  • 如果没有加上–disable-everything,那么相当于开启了ffmpeg的9种组件支持的所有东西

  • 我们如果要编译ffmpeg库来二次开发,那么一般情况下不会用到所有东西,因此建议加上这个选项,然后再通过enable只打开需要的,这样能减少最后编译库的大小和时间

–disable-[component]

  • 我们都知道ffmpeg完全编译后有avcodec,avdevice,avformat,swresample,swscale,avfilter,avutil,postproc这8大块

  • 如果不做任何配置,这8大块默认是开启的

  • 而我们可能不需要其中的一些,比如不需要后处理postproc这一块,那么我们就可以关闭它,比如

    ./configure --disable-postproc
    
       
       
    • 1
  • 这样就不会编译postproc这个组件了

–enable-shared

  • 默认情况下编译的库是静态的,如果我们想编译动态的,那么就可以加上这个选项,而ffmpeg还为我们提供了显示关闭静态库的选项–disable-static,而一般情况下静动态是不会同时编译的,也就是说如果打开动态库的开关,那么静态库也就被关闭了,因此如果我们想编译动态库的就加上这一行,如果是静态的就不用作修改

    ./configure --enable-shared
    
       
       
    • 1

–enable-cross-compile

  • 如果想交叉编译,那么得开启这个开启这个选项,同时还得设置–arch和–target_os和–cross_prefix,实际上你只要增加了–cross_prefix选项,那么configure会自动帮你加上–enable-cross-compile,也就是有了–cross_prefix,–enable-cross-compile你可以省略不写
  • 从configure里可以看出,如下在这里插入图片描述
  • –arch可以设置哪些值呢,直接在configure中搜索“ARCH_LIST”就可以查到
  • –target_os可以设置的值在configure文件中可以你通过搜索“case $target_os in”就可以定位到了
  • –cross-prefix这个指定的是交叉编译工具的前缀(如果没有前缀可以不写),比如如果交叉编译工具x86_64-w64-mingw32-gcc,那么你就应该写–cross-prefix=x86_64-w64-mingw32-,注意最后的横线,别漏了,然后configure就会找到–cc设置的值,这个值默认是gcc,也就是相当于加了–cc=gcc的选项,configure会把这两个值拼接在一起,形成x86_64-w64-mingw32-gcc,这样就找到了这个交叉编译工具,至于这个x86_64-w64-mingw32-gcc你肯定要将其配置进环境变量,不然都找不到路径就没法使用了

–extra-

  • 如果需要在编译时增加其他库,则一般需要这个将其包含进来
  • 最常见的就是–extra-cflags和–extra-ldflags
--extra-cflags="-I/path/include "    //增加库的头文件
--extra-ldflags="-L/path/to/your/lib"  //增加库(so等)

 
 
  • 1
  • 2

其他

ffmpeg不支持解封装mp4吗?

  • 当我们查看ffmpeg的muxer时发现有mp4,而在demuxer列表里却没看到mp4,难道ffmpeg不支持解封装mp4?
  • 其实不是的,主要是因为mov,mp4,m4a,3gp,3g2,mj2这几种的解封装都太相似了,所以在ffmpeg里直接用mov就行了,也就是你想ffmpeg支持解封装mp4,那么加上–enable-demuxer=mov即可

编译不成功怎么办

  • 编译失败除了看看控制台的提示信息外,在源码的ffbuild/config.log里记录了编译时的相关日志,拖到最后查看日志信息,再百度搜索下解决方案

总结

  • 我们使用ffmpeg一般都是作为二次开发,否则直接拿官方的就可以用了,而二次开发往往不需要ffmpeg的所有东西,往往只需要其中的某些库而已,这样就会有一些基本的配置是可以一直保持的

  • 最后总结出一些基础的配置,为了减少编译时间和体积,以下是建议配置的,其他要根据实际情况决定

    ./configure \
    --enable-gpl --enable-version3 \
    --diable-everything  --disable-debug --disable-logging \
    --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe \
    --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages \
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5

参考

https://blog.csdn.net/xinyuan510214/article/details/50457433

ffmpeg ./configure 的相关参数说明_移动开发_fengsh998的专栏-CSDN博客\nhttps://blog.csdn.net/fengsh998/article/details/79443503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值