FFmpeg编译配置

2022-12-15  本文已影响0人  永恒之眼V

一、FFmpeg常用的编译配置

关于FFmpeg的编译配置,在clone下源码之后,可以通过 ./configure --help 进行查看,以下对常用配置进行的总结。

1、Standard options

--prefix: 指定ffmpeg安装的路径

2、Licensing options

--enable-gpl :允许使用GPL代码,默认关闭
--enable-nonfree :允许使用不免费代码
--enable-version3: 更新GPL-3

3、Configuration options

--enable-shared:编译成动态库,默认编译成静态库

4、Program options

默认情况下,该设置项的配置都是打开的,特殊情况可配置关闭

5、Documentation options

默认情况下,该设置项的配置都是打开的,特殊情况可配置关闭

6、Component options (组件设置)

默认情况下,该设置项的配置都是打开的,特殊情况可配置关闭,不在此项的组件,需要通过单个组件进行开启。

7、Individual component options (单个组件设置)

可单独配置编解码器、复用与封装器、滤镜等

--enable-filter=delogo :启用去水印的滤镜

8、External library support (配置外部库的支持)

--enable-libfdk-aac:使用 libfdk-aac 库进行aac的编解码
--enable-libx264 :使用 libx264 进行h.264的编码
--enable-libx265 :使用 libx265 进行h.265的编码
--enable-libspeex :使用 libspeex 进行Speex的编解码,Speex是一种声音编码格式

9、Toolchain options(编译工具链设置)

--cc=CC:配置使用的c编译器为 gcc,其他的c编译器有:clang
--cxx=CXX:配置使用的c++编译器为 g++

  ========================= 工具链配置参考 ============================

      --arch = ARCH select architecture []
      --cpu = CPU选择所需的最小CPU(影响
                               指令选择,可能会在较旧的CPU上崩溃)
      --cross-prefix = PREFIX使用PREFIX编译工具[]
      --progs-suffix = SUFFIX程序名后缀[]
      --enable-cross-compile假设使用了交叉编译器
      --sysroot =交叉构建树的PATH根
      --sysinclude =交叉构建系统头的PATH位置
      --target-os = OS编译器目标OS []
      --target-exec = CMD命令在目标上运行可执行文件
      --target-path =在目标上查看构建目录的DIR路径
      --target-samples =目标上样本目录的DIR路径
      --tempprefix = PATH强制修复dir /前缀而不是mktemp进行检查
      --toolchain = NAME根据NAME设置工具默认值
                               (gcc-asan,clang-asan,gcc-msan,clang-msan,
                               gcc-tsan,clang-tsan,gcc-usan,clang-usan,
                               valgrind-massif,valgrind-memcheck,
                               msvc,icl,gcov,llvm-cov,hardened)
      --nm = NM使用nm工具NM [nm -g]
      --ar = AR使用存档工具AR [ar]
      --as = AS使用汇编程序AS []
      --ln_s = LN_S使用符号链接工具LN_S [ln -s -f]
      --strip = STRIP使用剥离工具STRIP [strip]
      --windres = WINDRES使用windows资源编译器WINDRES [windres]
      --x86asmexe = EXE使用nasm兼容的汇编程序EXE [nasm]
      --cc = CC使用C编译器CC [gcc]
      --cxx = CXX使用C编译器CXX [g ++]
      --objcc = OCC使用ObjC编译器OCC [gcc]
      --dep-cc = DEPCC使用依赖关系生成器DEPCC [gcc]
      --nvcc = NVCC使用Nvidia CUDA编译器NVCC [nvcc]
      --ld = LD使用链接器LD []
      --pkg-config = PKGCONFIG使用pkg-config工具PKGCONFIG [pkg-config]
      --pkg-config-flags = FLAGS将附加标志传递给pkgconf []
      --ranlib = RANLIB使用ranlib RANLIB [ranlib]
      --doxygen = DOXYGEN使用DOXYGEN生成API doc [doxygen]
      --host-cc = HOSTCC使用主机C编译器HOSTCC
      --host-cflags = HCFLAGS在编译主机时使用HCFLAGS
      --host-cppflags = HCPPFLAGS在编译主机时使用HCPPFLAGS
      --host-ld = HOSTLD使用主机链接器HOSTLD
      --host-ldflags = HLDFLAGS在链接主机时使用HLDFLAGS
      --host-libs = HLIBS在链接主机时使用libs HLIBS
      --host-os = OS编译器主机OS []
      --extra-cflags = ECFLAGS将ECFLAGS添加到CFLAGS []
      --extra-cxxflags = ECFLAGS将ECFLAGS添加到CXXFLAGS []
      --extra-objcflags = FLAGS将标志添加到OBJCFLAGS []
      --extra-ldflags = ELDFLAGS将ELDFLAGS添加到LDFLAGS []
      --extra-ldexeflags = ELDFLAGS将ELDFLAGS添加到LDEXEFLAGS []
      --extra-ldsoflags = ELDFLAGS将ELDFLAGS添加到LDSOFLAGS []
      --extra-libs = ELIBS add ELIBS []
      --extra-version = STRING版本字符串后缀[]
      --optflags = OPTFLAGS覆盖与优化相关的编译器标志
      --nvccflags = NVCCFLAGS覆盖nvcc标志[-gencode arch = compute_30,code = sm_30 -O2]
      --build-suffix = SUFFIX库名后缀[]
      --enable-pic构建与位置无关的代码
      Thumb指令集的--enable-thumb编译
      --enable-lto使用链接时优化
      --env =“ENV = override”覆盖环境变量

 =========================== 工具链配置参考 ============================ 
10、Optimization options

--disable-optimizations:关闭代码优化设置

11、Developer options

--disable-debug:禁用调试日志
--enable-debug=LEVEL:设置调试级别,当不配置LEVEL就是禁用调试日志
--disable-optimizations:禁用编译器优化

12、Other options:

--enable-pthread:启用pthreads(多线程),默认关闭

二、Mac环境下编译安装

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-version3 --enable-shared --enable-filter=delogo --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-libspeex --enable-videotoolbox --enable-debug  --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags= --disable-x86asm 
2.1 编译中遇到的问题
(1) ERROR: speex not found using pkg-config
      1、首先检查 speex 是否有安装,没有安装执行 brew install speex 进行安装。
      2、安装完 speex 依然提示这个错误,检查是否安装 pkg-config , 可通过 pkg-config 命令检查,如果提示:command not found: pkg-config,则进行 pkg-config 的安装,brew install pkg-install
(2) ERROR: x264 not found using pkg-config
      brew install x264
(3) ERROR: x265 not found using pkg-config
      brew install x265
(4) 权限问题
      sudo make && sudo make install 
(5) 安装完成后,发现 /usr/local/ffmpeg/bin 没有 ffplay
      这是因为系统缺少sdl2,会导致ffplay无法编译成功,brew install sdl2,然后重新执行安装
上一篇 下一篇

猜你喜欢

热点阅读