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)。 工具链支持,需匹配开发环境。
相关推荐
卖猪肉的痴汉19 小时前
3.1 Android NDK交叉编译FFmpeg
android·ffmpeg
却道天凉_好个秋19 小时前
ffmpeg(七):直播相关命令
ffmpeg
卖猪肉的痴汉1 天前
5.2 Qt Creator 使用FFmpeg库
开发语言·qt·ffmpeg
aqi001 天前
FFmpeg开发笔记(六十八)Windows给FFmpeg集成AV1解码器libdav1d
ffmpeg·音视频·直播·流媒体
卖猪肉的痴汉1 天前
5.3 VSCode使用FFmpeg库
ide·vscode·ffmpeg
却道天凉_好个秋1 天前
ffmpeg(六):图片与视频互转命令
ffmpeg·音视频
.鱼子酱2 天前
FFmpeg 超级详细安装与配置教程(Windows 系统)
windows·ffmpeg
aqi002 天前
FFmpeg开发笔记(六十七)Windows给FFmpeg集成支持RIST协议的librist
ffmpeg·音视频·直播·流媒体