在 Linux 上从源代码构建 FFmpeg
本页面介绍了如何在 Linux 上配置和构建FFmpeg。所需步骤如下:
- 获取 FFmpeg 源代码。
- 安装所需的依赖项。
- 通过命令行配置 FFmpeg。
- 构建开发库。
获取 FFmpeg 源代码
您可以通过以下方式获取 FFmpeg 源代码:
- 从FFmpeg 下载页面下载。
- 从 Git 克隆。例如,以下命令将 FFmpeg 9.0.1 版本的源代码克隆到
~/ffmpeg。git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg
建议使用与Qt Multimedia 主页中所述相同的 FFmpeg 版本。
下文假设您将 FFmpeg 源代码存储在~/ffmpeg 目录下。
先决条件
要构建 FFmpeg,需要以下工具和软件包:
- Yasm。
- 您所选安全后端对应的开发者软件包(见下文)。
安装软件包
要安装所需的软件包(包括 FFmpeg 所需的 Yasm),请运行:
apt-get install yasm此外,若要启用安全后端,您需要相应的开发者软件包,例如:
apt-get install libssl-dev对于其他后端,请安装相关软件包:
- 对于 OpenSSL:
libssl-dev。 - 对于 GnuTLS:
libgnutls-dev。 - 对于 LibreSSL(libtls):
libtls-dev。 - 对于 MbedTLS:
libmbedtls-dev。
配置和构建 FFmpeg
在~/ffmpeg 目录下创建一个build 目录,并进入该目录:
mkdir ~/ffmpeg/build
cd ~/ffmpeg/build要配置 FFmpeg,请运行:
../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-shared--prefix 参数指定了构建完成后 FFmpeg 开发库的安装路径。文档选项无需启用,但应启用网络功能。若要将 FFmpeg 构建为静态库,请省略--enable-shared 选项。
若要使用安全后端构建 FFmpeg,请选择相应的选项:
../configure --enable-openssl # For OpenSSL
../configure --enable-gnutls # For GnuTLS
../configure --enable-libtls # For LibreSSL (libtls)
../configure --enable-mbedtls # For MbedTLS请确保已安装如前所述的相应开发者软件包。
硬件加速
默认情况下,除非安装了相应的软件包,否则 FFmpeg 不会启用硬件加速。为了获得更好的性能(特别是在支持 GPU 的系统上),建议安装 VAAPI 开发软件包:
apt-get install libva-dev这将使 FFmpeg 能在配置过程中检测到 VAAPI 支持。
如果 FFmpeg 将与 NVIDIA 显卡配合使用,则应安装 NVIDIA 编解码器头文件。这些头文件可从以下仓库下载:GitHub 上的 NVIDIA 编解码器头文件。
要编译并安装这些头文件,请运行以下命令:
mkdir ~/nv-codec-headers
cd ~/nv-codec-headers
git clone https://github.com/FFmpeg/nv-codec-headers.git
mkdir build
cd build
make -j install请务必检查nv-codec-headers 与您的NVIDIA驱动程序版本的兼容性,因为较新的nv-codec-headers 可能与旧版驱动程序不兼容。更多详情请参阅官方文档。
禁用自动检测
默认情况下,FFmpeg 会尝试自动检测构建系统上可用的依赖项。这包括硬件加速和安全后端。如果您想禁用自动检测(例如,为了避免编译不必要的依赖项),可以使用:
../configure --disable-autodetect如果您在构建 FFmpeg 时使用了任何额外依赖项(如安全后端或硬件加速),请确保目标系统上已安装所需的库。有几种方法可以处理此问题:
- 将依赖项的二进制文件与 FFmpeg 一起分发。
- 确保目标系统上已安装所需的二进制文件。
- 实现库存根(library stubs),使其能够查找实际库,并在找不到实际库时返回错误代码。
Linux 系统上的 RPATH 和 RUNPATH
在 Linux 系统上,FFmpeg 同时使用 RPATH 和 RUNPATH 元数据部分来管理库路径。我们建议使用patchelf 工具来设置正确的运行路径:
patchelf --set-rpath "new/runpath" lib.so默认情况下,patchelf 会修改 RUNPATH,因为在 Linux 上 RPATH 已被视为过时。若要设置相对运行路径,可以使用$ORIGIN 变量,该变量会将路径相对于可执行文件的位置进行定义:
patchelf --set-rpath "$ORIGIN/../lib" lib.so这种方法通过根据库文件的相对位置进行链接,从而确保了可移植性。
构建 FFmpeg
当configure 命令执行完毕后,请使用make 命令构建并安装 FFmpeg。
make -j install如果构建过程没有报错,FFmpeg开发库将安装在/usr/local/ffmpeg 目录中。如果您构建的是Qt Multimedia ,该路径将存储在FFMPEG_DIR 变量中,该变量在配置Qt Multimedia 时会被使用。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.