4.1 FFmpeg编译选项配置

一、不同场景的编译选项

1.1 源码调试场景

开启debug和禁用strip,防止代码优化,避免源码调试时乱跳。

bash 复制代码
# 生成Makefile
./configure \
--prefix=$(pwd)/../install_mingw \
--enable-gpl \
--enable-debug=3 \
--disable-optimizations \
--disable-asm \
--disable-stripping \
--enable-nonfree \
--enable-shared

# 编译 安装
make -j8
make install

1.2 支持x264、fdk-aac、mp4

bash 复制代码
./configure \
--prefix=$(pwd)/../ffmpeg_build \
--disable-everything \
--disable-programs \
--disable-doc \
--disable-zlib \
--disable-debug \
--disable-neon \
--enable-pic \
--enable-memalign-hack \
--enable-gpl \
--enable-libx264 \
--enable-nonfree \
--enable-libfdk-aac \
--enable-encoder=aac,libfdk_aac \
--enable-encoder=aac,libx264 \
--enable-decoder=aac,aac_latm,h264 \
--enable-demuxer=aac,asf,ffmetadata,h264,mp3  \
--enable-muxer=adts,h264,mp4,pcm_s16le  \
--enable-parser=aac,aac_latm,h264 \
--enable-protocol=file \
--extra-cflags="-I$(pwd)/../3rdparty_mingw/include" \
--extra-ldflags="-L$(pwd)/../3rdparty_mingw/lib"

# 编译 安装
make -j8
make install

1.3 支持x264、x265、fdk-aac、lame、mp4、flv

bash 复制代码
./configure \
--prefix=$(pwd)/../ffmpeg_build \
--disable-everything \
--disable-programs \
--disable-doc \
--disable-zlib \
--disable-debug \
--enable-shared \
--enable-muxer=mp4,flv,mp3,wav \
--enable-demuxer=mp4,mov,mp3,aac \
--enable-encoder=libx264,libx265,libfdk_aac,libmp3lame \
--enable-decoder=aac,h264,hevc,mp3 \
--enable-protocol=file,http \
--enable-filter=aresample \
--enable-bsf=aac_adtstoasc \
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk-aac \
--enable-libmp3lame \
--extra-cflags="-I$(pwd)/../3rdparty_mingw64/include" \
--extra-ldflags="-L$(pwd)/../3rdparty_mingw64/lib"

# 编译 安装
make -j8
make install

二、参数讲解

2.1 组件禁用与启用

减小库大小原则:先关闭所有组件,再开启自己需要的功能。

禁用选项:

编译选项 描述 禁用的组件示例
--disable-everything 禁用所有组件 所有编码器、解码器、muxer、demuxer、协议、滤镜、设备、解析器、位流滤镜等
--disable-avdevice 禁用所有输入、输出设备 v4l2、alsa、pulse、directshow、decklink、x11grab 等
--disable-encoders 禁用所有编码器 libx264、libx265、aac、mp3、vp8、vp9、huffyuv、mpeg2video 等
--disable-decoders 禁用所有解码器 h264、hevc、mpeg2video、mp3、aac、vp8、vp9、flac、pcm_s16le 等
--disable-muxers 禁用所有 muxer mp4、avi、mkv、flv、mov、webm、mpegts、hls 等
--disable-demuxers 禁用所有 demuxer mp4、avi、mkv、flv、mov、webm、mpegts、rtsp 等
--disable-parsers 禁用所有 parser h264、hevc、mpegvideo、mpeg4audio、aac、vp9、vp8 等
--disable-bsfs 禁用所有 bitstream filters h264_mp4toannexb、aac_adtstoasc、hevc_mp4toannexb、vp9_superframe 等
--disable-filters 禁用所有 filters scale、crop、overlay、vflip、hflip、drawtext、equalizer、volume 等
--disable-protocols 禁用所有 protocols file、http、https、rtmp、rtsp、ftp、udp、tcp、srt 等
--disable-network 禁用网络 http、https、rtmp、rtsp、ftp、udp、tcp、srt 等网络相关协议
--disable-programs 禁止生成程序 ffmpeg、ffplay、ffprobe 等可执行程序

启用选项:

编译选项 描述 启用组件示例
--enable-encoder=NAME 启用指定编码器 libx264, libx265, aac, mp3, vp8, vp9, mpeg2video
--enable-decoder=NAME 启用指定解码器 h264, hevc, mpeg2video, mp3, aac, vp8, vp9, flac
--enable-hwaccel=NAME 启用指定硬件加速 h264_vaapi, hevc_nvenc, mpeg2_vdpau, vp9_dxva2
--enable-muxer=NAME 启用指定 muxer mp4, avi, mkv, flv, mov, webm, mpegts, hls
--enable-demuxer=NAME 启用指定 demuxer mp4, avi, mkv, flv, mov, webm, mpegts, rtsp
--enable-parser=NAME 启用指定 parser h264, hevc, mpegvideo, mpeg4audio, aac, vp9, vp8
--enable-bsf=NAME 启用指定 bitstream filter h264_mp4toannexb, aac_adtstoasc, hevc_mp4toannexb, vp9_superframe
--enable-protocol=NAME 启用指定协议 file, http, https, rtmp, rtsp, ftp, udp, tcp, srt
--enable-indev=NAME 启用指定输入设备 v4l2, alsa, pulse, dshow, decklink, x11grab
--enable-outdev=NAME 启用指定输出设备 alsa, pulse, sdl, xv, opengl
--enable-filter=NAME 启用指定滤镜 scale, crop, overlay, vflip, hflip, drawtext, equalizer, volume

举例:

bash 复制代码
# 只启用flv、mp4、mp3、aac
./configure \
--prefix=$(pwd)/../ffmpeg_build \
--disable-everything \
--enable-shared \
--enable-muxer=mp4,flv,mp3,wav \
--enable-demuxer=mp4,mov,mp3,aac

2.2 第三方库编译选项

类别 编译选项 描述
音频 --enable-libspeex --enable-encoder=speex --enable-decoder=speex 启用 Speex 音频编解码支持
--enable-libopus --enable-encoder=opus --enable-decoder=opus 启用 Opus 音频编解码支持
--enable-libfdk-aac --enable-gpl --enable-encoder=aac --enable-decoder=aac 启用 Fraunhofer FDK AAC 音频编解码支持
--enable-libmp3lame --enable-encoder=mp3lame 启用 LAME MP3 音频编码支持
视频 --enable-libopenh264 --enable-encoder=libopenh264 --enable-decoder=openh264 启用 OpenH264 视频编解码支持
--enable-libx264 --enable-nonfree --enable-encoder=libx264 启用 x264 视频编码支持
--enable-libx265 --enable-encoder=libx265 启用 x265 H.265 视频编码支持
--enable-libvpx --enable-encoder=libvpx_vp8 --enable-decoder=vp8 --enable-encoder=libvpx_vp9 --enable-decoder=vp9 启用 VP8/VP9 视频编解码支持
--enable-libwebp --enable-encoder=libwebp --enable-decoder=webp 启用 WebP 图像编解码支持
--enable-libopenjpeg --enable-encoder=libopenjpeg --enable-decoder=jp2k 启用 OpenJPEG JPEG 2000 编解码支持
框架 --enable-mediacodec --enable-hwaccel=mediacodec 启用 Android MediaCodec 硬件加速支持
--disable-avfoundation 禁用 macOS AVFoundation 框架支持
流媒体协议 --enable-librtmp --enable-protocol=rtmp 启用 RTMP 流媒体协议支持
--enable-libsrt --enable-protocol=srt 启用 SRT 流媒体协议支持
加密 --enable-openssl --enable-protocol=https --enable-protocol=tls 启用 OpenSSL 加密协议支持
--enable-libtls --enable-protocol=tls 启用 LibreSSL TLS 加密协议支持
--enable-mbedtls --enable-protocol=https --enable-protocol=tls 启用 mbedTLS 加密协议支持
--enable-gnutls --enable-protocol=https --enable-protocol=tls 启用 GnuTLS 加密协议支持
其他 --disable-sdl2 禁用 SDL2 输出支持
--enable-libopencv --enable-filter=opencv 启用 OpenCV 计算机视觉滤镜支持
--enable-libfreetype --enable-filter=drawtext 启用 FreeType 字体渲染支持
--enable-libfontconfig --enable-filter=drawtext 启用 Fontconfig 字体配置支持
--enable-libfribidi --enable-filter=drawtext 启用 FriBidi 双向文本渲染支持
设备 --disable-alsa 禁用 ALSA 音频设备支持
--enable-libv4l2 --enable-indev=v4l2 启用 Video4Linux2 视频捕获支持
--enable-openal --enable-outdev=openal 启用 OpenAL 音频输出支持

--enable-libx264--enable-encoder=libx264的区别?

  • --enable-libx264 要求在编译ffmpeg时链接libx264库文件
  • --enable-encoder=libx264 启用lib264编码器,如果没有使用--enable-libx264,单独使用--enable-encoder=libx264是无效的。

使用--disable-everything--enable-libx264 后,是否需要使用--enable-encoder=libx264

  • 需要--enable-encoder=libx264
  • 因为使用--disable-everything会禁用所有组件,包括所有编码器,也包括libx264编码器,如果不启用,--enable-libx264只是链接libx264库文件而已,没有启用libx264编码器。

如何指定第三方库的路径?

bash 复制代码
# 1.通过pkg-config搜索路径
export PKG_CONFIG_PATH=$(pwd)/../mingw64/lib/pkgconfig:$PKG_CONFIG_PATH

# 2.通过cflags和ldflags

#(1)Linux
# 所有第三方库都安装在一个目录下
./configure \
...
--extra-cflags="-I/mingw64/include" \
--extra-ldflags="-L/mingw64/lib" \
--extra-libs="-lpthread -lm"

# 第三方库分别在不同目录
./configure \
...
--extra-cflags="-I/opt/x264/include -I/opt/fdk-aac/include -I/mingw64/include" \
--extra-ldflags="-L/opt/x264/lib -L/opt/fdk-aac/lib -L/mingw64/lib" \
--extra-libs="-lpthread -lm"

# --extra-cflags 头文件的目录
# --extra-ldflags 库的目录
# --extra-libs  库名称,一般用不到


#(2)Windows
./configure \
...
--extra-cflags="-I$(pwd)/../3rdparty_msvc/include" \
--extra-ldflags="-LIBPATH:$(pwd)/../3rdparty_msvc/lib"

2.3 交叉编译

编译选项 描述
--arch=ARCH 指定目标架构(如 arm、aarch64、x86、x86_64 等)
--target-os=OS 指定目标操作系统(如 linux、android、windows 等)
--cross-prefix=PREFIX 指定交叉编译工具链的前缀(如 arm-linux-gnueabi-)
--enable-cross-compile 启用交叉编译模式
--sysroot=PATH 指定目标系统的根文件系统路径,用于查找库和头文件
--sysinclude=PATH 指定系统头文件的路径,用于交叉编译时的头文件位置
--toolchain=NAME 指定工具链名称(如 gcc、msvc 等)
--cc=CC 指定 C 编译器路径(如 arm-linux-gnueabi-gcc)
--cxx=CXX 指定 C++ 编译器路径(如 arm-linux-gnueabi-g++)
--ld=LD 指定链接器路径(如 arm-linux-gnueabi-ld)
--ar=AR 指定 ar 工具路径,用于创建静态库(如 arm-linux-gnueabi-ar)
--strip=STRIP 指定 strip 工具路径,用于去除调试信息(如 arm-linux-gnueabi-strip)
--as=AS 指定汇编器路径(如 arm-linux-gnueabi-as)
--ln_s=LN_S 指定符号链接工具路径(如 ln -s)
--nm=NM 指定 nm 工具路径,用于列出目标文件符号(如 arm-linux-gnueabi-nm)
--extra-cflags=ECFLAGS 指定额外的 C 编译器标志(如 -I/path/to/include)
--extra-cxxflags=ECFLAGS 指定额外的 C++ 编译器标志(如 -I/path/to/include)
--extra-ldflags=ELDFLAGS 指定额外的链接器标志(如 -L/path/to/lib)
--extra-ldexeflags=ELDFLAGS 指定额外的可执行文件链接器标志(如 -L/path/to/lib)

案例背景

  • 目标架构:aarch64(ARM 64位)
  • 目标操作系统:Linux
  • 工具链:aarch64-linux-gnu(基于 GCC 的交叉编译工具链)
  • 功能需求 :支持 H.264 视频编码(使用 libx264),输出 MP4 容器格式,仅支持本地文件协议。
  • 环境 :在 x86_64 Linux 主机上进行交叉编译,目标系统的 sysroot 位于 /path/to/aarch64-sysroot

安装交叉编译工具链

bash 复制代码
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu

安装 libx264 开发库(为 aarch64 架构预编译):

假设 libx264 的头文件和库文件已安装在 /path/to/aarch64-sysroot/usr/include/path/to/aarch64-sysroot/usr/lib

配置命令

bash 复制代码
./configure \
  --arch=aarch64 \
  --target-os=linux \
  --cross-prefix=aarch64-linux-gnu- \
  --enable-cross-compile \
  --sysroot=/path/to/aarch64-sysroot \
  --sysinclude=/path/to/aarch64-sysroot/usr/include \
  --toolchain=gcc \
  --cc=aarch64-linux-gnu-gcc \
  --cxx=aarch64-linux-gnu-g++ \
  --ld=aarch64-linux-gnu-ld \
  --ar=aarch64-linux-gnu-ar \
  --strip=aarch64-linux-gnu-strip \
  --as=aarch64-linux-gnu-as \
  --nm=aarch64-linux-gnu-nm \
  --extra-cflags="-I/path/to/aarch64-sysroot/usr/include" \
  --extra-ldflags="-L/path/to/aarch64-sysroot/usr/lib" \
  --disable-everything \
  --enable-libx264 \
  --enable-encoder=libx264 \
  --enable-muxer=mp4 \
  --enable-protocol=file

2.4 编译选项详解

(1)许可证和协议(影响分发)

编译选项 描述 启用的组件或注意事项
--enable-gpl 启用 GPL 许可证,允许使用 GPL 授权的代码。 x264、x265 等 GPL 组件,编译结果受 GPL 限制。
--enable-nonfree 启用非自由代码,支持专利或专有功能。 fdk-aac 等非自由组件,编译结果不可自由分发。
--enable-lgpl 启用 LGPL 许可证(默认启用),限制较少。 LGPL 组件,适合自由分发场景。
--enable-version3 启用 LGPL v3 许可证,兼容某些新版本库。 LGPL v3 库,需注意兼容性。

(2)安装路径

编译选项 描述 启用的组件或注意事项
--prefix=PREFIX 指定安装路径,默认 /usr/local 自定义安装路径(如 /usr),需确保权限。
--bindir=DIR 指定可执行文件安装目录,默认 PREFIX/bin 可执行文件(如 ffmpeg),用于分离二进制文件。
--libdir=DIR 指定库文件安装目录,默认 PREFIX/lib 库文件(如 libavcodec),用于分离库文件。
--includedir=DIR 指定头文件安装目录,默认 PREFIX/include 头文件,用于开发环境。
--mandir=DIR 指定 man 页面安装目录,默认 PREFIX/share/man man 页面,用于文档分离。
--docdir=DIR 指定文档安装目录,默认 PREFIX/share/doc/ffmpeg 文档文件,用于文档管理。
--enable-rpath 启用 rpath,确保动态链接库使用指定路径。 动态链接库路径,适合自定义安装路径。

(3)组件控制

编译选项 描述 禁用的组件示例或启用的组件
--disable-everything 禁用所有组件,需逐个启用所需功能。 所有编码器、解码器、muxer、demuxer、协议、滤镜、设备、解析器、位流滤镜等
--disable-static 不构建静态库(默认构建)。 静态库文件(如 libavcodec.a)
--enable-shared 构建共享库(.so 或 .dll)。 动态链接库(如 libavcodec.so
--disable-doc 不编译文档。 HTML 文档、man 页面
--disable-ffmpeg 不编译 ffmpeg 命令行工具。 ffmpeg 可执行文件
--disable-ffplay 不编译 ffplay 播放器。 ffplay 可执行文件
--disable-ffprobe 不编译 ffprobe 媒体分析工具。 ffprobe 可执行文件
编译选项 描述 禁用的组件示例或启用的组件
--disable-avdevice 禁用所有输入、输出设备。 v4l2、alsa、pulse、directshow、decklink、x11grab 等
--disable-swresample 禁用 libswresample 库(音频重采样)。 音频重采样功能(如格式转换、采样率调整)
--disable-postproc 禁用 libpostproc 库(视频后处理,如去块效应)。 视频后处理(如去块滤镜)
--disable-avcodec 禁用 libavcodec 库(编解码核心)。 所有编码器和解码器(如 h264、aac、mpeg2)
--disable-avformat 禁用 libavformat 库(容器格式处理)。 所有容器格式(如 mp4、mkv、flv)
--disable-swscale 禁用 libswscale 库(视频缩放和像素格式转换)。 视频缩放、像素格式转换(如 yuv420p 到 rgb)
--disable-avfilter 禁用 libavfilter 库(音视频滤镜)。 所有滤镜(如 scale、crop、drawtext)
--disable-programs 禁用所有命令行工具(ffmpeg、ffplay、ffprobe)。 ffmpeg、ffplay、ffprobe 可执行文件
--enable-avresample 启用 libavresample 库(旧版音频重采样)。 libavresample(已 deprecated,推荐 swresample)
--disable-encoders 禁用所有编码器。 libx264、libx265、aac、mp3、vp8、vp9、huffyuv、mpeg2video 等
--disable-decoders 禁用所有解码器。 h264、hevc、aac、mp3、vp8、vp9、mpeg2video 等
--disable-muxers 禁用所有封装器。 mp4、mkv、flv、avi、hls 等
--disable-demuxers 禁用所有解封装器。 mp4、mkv、flv、avi、hls 等
--disable-protocols 禁用所有协议。 http、rtmp、srt、udp、tcp 等
--disable-filters 禁用所有滤镜。 scale、crop、drawtext、overlay、eq 等

(4)外部库支持

音频编解码器

编译选项 描述 启用的组件或注意事项
--enable-libmp3lame 启用 MP3 编码(LAME)。 MP3 编码器,需 libmp3lame-dev--enable-gpl
--enable-libfdk-aac 启用高质量 AAC 编码(fdk-aac)。 AAC 编码器,需 libfdk-aac-dev--enable-nonfree
--enable-libopus 启用 Opus 音频编解码。 Opus 编解码器,需 libopus-dev
--enable-libvorbis 启用 Vorbis 音频编码。 Vorbis 编码器,需 libvorbis-dev
--enable-libshine 启用 Shine MP3 编码器(轻量级)。 MP3 编码器,需 libshine-dev,替代 LAME。
--enable-libtwolame 启用 TwoLAME MP2 编码器。 MP2 编码器,需 libtwolame-dev
--enable-libspeex 启用 Speex 音频编解码(适合语音)。 Speex 编解码器,需 libspeex-dev
--enable-libflac 启用 FLAC 无损音频编解码。 FLAC 编解码器,需 libflac-dev
--enable-libgsm 启用 GSM 音频编解码(移动通信格式)。 GSM 编解码器,需 libgsm-dev

视频编解码器

编译选项 描述 启用的组件或注意事项
--enable-libx264 启用 H.264/AVC 视频编码(x264)。 H.264 编码器,需 libx264-dev--enable-gpl
--enable-libx265 启用 HEVC/H.265 视频编码(x265)。 H.265 编码器,需 libx265-dev--enable-gpl
--enable-libvpx 启用 VP8/VP9 编解码(libvpx)。 VP8/VP9 编解码器,需 libvpx-dev
--enable-libaom 启用 AV1 编码(AOM)。 AV1 编码器,需 libaom-dev,编译时间较长。
--enable-libsvtav1 启用 SVT-AV1 编码(Intel AV1 编码器)。 AV1 编码器,需 libsvtav1-dev
--enable-libtheora 启用 Theora 视频编码。 Theora 编码器,需 libtheora-dev
--enable-libxvid 启用 Xvid(MPEG-4 ASP)编码。 Xvid 编码器,需 libxvid-dev
--enable-libzimg 启用 zimg 库(高质量图像缩放和颜色转换)。 zimg 缩放/转换,需 libzimg-dev
--enable-libopenh264 启用 OpenH264(Cisco 的 H.264 实现)。 H.264 编解码器,需 libopenh264-dev

容器

编译选项 描述 启用的组件或注意事项
--enable-libwebp 支持 WebP 图像格式。 WebP 容器,需 libwebp-dev
--enable-libxml2 支持 XML 解析(用于 DASH 等格式)。 DASH 容器,需 libxml2-dev
--enable-libopenjpeg 支持 JPEG 2000 格式。 JPEG 2000 容器,需 libopenjpeg-dev
--enable-libbluray 支持 Blu-ray 光盘解析。 Blu-ray 容器,需 libbluray-dev

协议

编译选项 描述 启用的组件或注意事项
--enable-libsrt 支持 SRT 协议(安全可靠传输)。 SRT 协议,需 libsrt-dev,适合实时流媒体。
--enable-libzmq 支持 ZeroMQ 协议(用于实时消息传递)。 ZeroMQ 协议,需 libzmq-dev
--enable-librtmp 支持 RTMP 协议(实时流媒体)。 RTMP 协议,需 librtmp-dev

硬件加速

编译选项 描述 启用的组件或注意事项
--enable-cuda 启用 CUDA 支持(NVIDIA GPU)。 CUDA 加速,需 NVIDIA GPU 和 CUDA SDK。
--enable-cuvid 启用 NVIDIA CUVID 解码。 CUVID 解码,需 NVIDIA GPU 和驱动。
--enable-nvenc 启用 NVIDIA NVENC 编码。 NVENC 编码,需 NVIDIA GPU 和驱动。
--enable-vaapi 启用 VAAPI(视频加速,Linux)。 VAAPI 加速,需 Intel/AMD GPU 和驱动。
--enable-vdpau 启用 VDPAU(Linux)。 VDPAU 加速,需 NVIDIA GPU 和驱动。
--enable-libmfx 启用 Intel QuickSync(Windows/Linux)。 QuickSync 加速,需 libmfx-dev
--enable-vulkan 启用 Vulkan 硬件加速(跨平台)。 Vulkan 加速,需 Vulkan 支持的 GPU。
--enable-opencl 启用 OpenCL 支持(GPU 计算)。 OpenCL 加速,需 OpenCL 驱动。
--enable-dxva2 启用 DXVA2 硬件加速(Windows)。 DXVA2 加速,需 Windows 和支持的 GPU。
--enable-d3d11va 启用 Direct3D11 视频加速(Windows)。 D3D11VA 加速,需 Windows 和支持的 GPU。
--enable-amf 启用 AMD AMF 硬件加速(Windows/Linux)。 AMF 加速,需 AMD GPU 和驱动。
--enable-videotoolbox 启用 VideoToolbox 硬件加速(macOS/iOS)。 VideoToolbox 加速,需 Apple 设备。

其他

编译选项 描述 启用的组件或注意事项
--enable-libdav1d 支持 AV1 解码(dav1d)。 AV1 解码器,需 libdav1d-dev
--enable-libmjpeg 支持 MJPEG 编码/解码。 MJPEG 编解码器。
--enable-libvmaf 支持 VMAF(视频质量评估,Netflix 开发)。 VMAF 评估,需 libvmaf-dev
--enable-libass 支持 ASS/SSA 字幕渲染。 ASS/SSA 字幕,需 libass-dev
--enable-libfreetype 支持加载字体(用于文本叠加/字幕)。 字体渲染,需 libfreetype-dev
--enable-libfontconfig 启用 Fontconfig(高级字体管理,Linux)。 Fontconfig 字体管理,需 libfontconfig-dev
--enable-libcdio 支持 CD 音频抓取。 CD 音频解析,需 libcdio-dev
--enable-libzvbi 支持 VBI(视频广播信息,如字幕)。 VBI 数据解析,需 libzvbi-dev
--enable-libvidstab 启用视频防抖。 视频防抖,需 libvidstab-dev

(5)优化选项

编译选项 描述 启用的组件或注意事项
--enable-optimizations 启用编译器优化(如 GCC 的 -O3)。 编译器优化(如 -O3),推荐性能优先。
--enable-small 优化代码大小(牺牲速度)。 小体积二进制,适合嵌入式设备。
--arch=ARCH 指定目标架构(如 x86, x86_64, armv7, aarch64)。 目标架构优化,需匹配硬件。
--enable-lto 启用链接时优化(Link-Time Optimization)。 LTO 优化,提升性能但增加编译时间。
--enable-pic 生成位置无关代码(适合共享库)。 位置无关代码,推荐用于动态链接库。
--cpu=CPU 指定目标 CPU(如 i686, sandybridge, armv8-a)。 CPU 特定优化,需匹配硬件。
--extra-cflags=FLAGS 添加编译器标志(如 -march=native)。 自定义编译器标志,需了解编译器支持。
--extra-ldflags=FLAGS 添加链接器标志。 自定义链接器标志,需了解链接器支持。

(6)调试选项

编译选项 描述 启用的组件或注意事项
--enable-debug=LEVEL 设置调试级别(0-3,默认 0)。 调试日志(级别越高越详细),性能下降。
--enable-valgrind 启用 Valgrind 兼容性(内存调试)。 Valgrind 内存调试,需 Valgrind 工具。
--enable-gcov 启用代码覆盖率测试。 代码覆盖率分析,需 gcov 工具。
--enable-logging 启用详细日志(默认启用)。 详细日志,可通过级别控制。
--toolchain=TOOLCHAIN 指定工具链(如 gcc 或 clang)。 工具链支持,需匹配开发环境。
相关推荐
kkoral13 分钟前
【FFmpeg 智慧园区场景应用】4.企业微信 / 钉钉机器人告警配置(替换邮件告警)
ffmpeg·钉钉·企业微信
kkoral2 小时前
【FFmpeg 智慧园区场景应用】3.Shell脚本增强:故障自动重启 + 磁盘监控告警
ffmpeg
大大祥1 天前
Android FFmpeg集成
android·ffmpeg·kotlin·音视频·jni·ndk·音视频编解码
好多渔鱼好多1 天前
【流媒体】FFmpeg技术介绍与构建方法
ffmpeg
没有羊的王K1 天前
下载安装FFmpeg教程
ffmpeg
kkoral1 天前
【FFmpeg 智慧园区场景应用】1.实战命令清单
ffmpeg
天虎1 天前
使用VS2019编译ShiftMediaProject版本FFmpeg
ffmpeg
kkoral1 天前
【FFmpeg 智慧园区场景应用】2.自动化处理 Shell 脚本
运维·ffmpeg·自动化
代码煮茶君1 天前
FFmpeg 音视频转码全攻略:参数详解与实战指南
ffmpeg·音视频
深念Y2 天前
录屏意外中断的视频修复软件 untrunc
ffmpeg·文件·视频·录屏·软件·修复工具·untrunc