2. 环境准备:在 Windows/Linux/macOS 上安装带硬件加速支持的 FFmpeg
说实话,很多同学学 FFmpeg 硬件加速,第一步就卡在环境安装上。
我见过太多人拿着官方文档硬啃,结果编译三天三夜,最后跑起来还是个纯软件版。嗯,咱们这节课就把这事彻底理清楚。
核心目标:让你在三类操作系统上,都能装出一个带 NVENC、QSV、AMF、Videotoolbox 等硬件加速能力的 FFmpeg。
2.1 先搞清楚你的硬件支持什么
装之前,我建议你先确认一件事:你的显卡支持哪些硬件加速器?
别急着动手,先看一眼这张表:
| 硬件平台 | 编码器 | 解码器 | FFmpeg 中对应的名称 |
|---|---|---|---|
| NVIDIA GPU(GTX 10 系及以上) | NVENC | NVDEC | h264_nvenc, hevc_nvenc, h264_cuvid, hevc_cuvid |
| Intel 核显(HD Graphics 6 代+) | QSV | QSV | h264_qsv, hevc_qsv, mjpeg_qsv |
| AMD GPU(RX 400 系+) | AMF | AMF | h264_amf, hevc_amf |
| Apple Silicon / Intel Mac | VideoToolbox | VideoToolbox | h264_videotoolbox, hevc_videotoolbox |
我在项目中遇到过好几次,有人拿着 GTX 1050 想用 NVENC,结果发现驱动没装对,FFmpeg 死活认不出。所以第一步,先把驱动更新到最新。
2.2 Windows 上装 FFmpeg(带 NVENC/AMF/QSV)
Windows 用户最省事。我个人习惯用 gyan.dev 的编译版,它已经集成了大部分硬件加速支持。
步骤一:下载预编译包
- 打开浏览器,访问
https://www.gyan.dev/ffmpeg/builds/ - 找到
ffmpeg-release-full.7z,下载它 - 解压到
C:\ffmpeg目录
步骤二:配置环境变量
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在
Path中添加C:\ffmpeg\bin - 打开 cmd,输入
ffmpeg -version,看到版本信息就对了
步骤三:验证硬件加速
跑一行命令试试:
ffmpeg -encoders | findstr nvenc
如果输出里有 h264_nvenc 和 hevc_nvenc,说明 NVENC 已经就绪。
小提示:如果你用的是 AMD 显卡,记得装 AMD Software: Adrenalin Edition,它自带 AMF 驱动。Intel 核显用户则需要装 Intel Graphics Driver,并确保 BIOS 里开启了核显。
2.3 Linux 上编译安装(最灵活,也最折腾)
Linux 下我推荐自己编译。为什么?因为发行版自带的 FFmpeg 通常不带硬件加速支持。我自己在 Ubuntu 20.04 上踩过这个坑,apt install 出来的版本连 --enable-nvenc 都没开。
步骤一:安装依赖
sudo apt update
sudo apt install -y \
build-essential \
yasm \
nasm \
libx264-dev \
libx265-dev \
libvpx-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopus-dev \
libvorbis-dev \
libass-dev \
libsdl2-dev \
libva-dev \
libvdpau-dev \
libmfx-dev \
libnvidia-encode-dev \
libnvidia-decode-dev
这里有个坑:libmfx-dev 是 Intel QSV 的库,libnvidia-encode-dev 和 libnvidia-decode-dev 是 NVIDIA 的。如果你没有对应的硬件,可以不装,但装了也没坏处。
步骤二:下载 FFmpeg 源码
wget https://ffmpeg.org/releases/ffmpeg-6.1.tar.xz
tar -xf ffmpeg-6.1.tar.xz
cd ffmpeg-6.1
步骤三:配置编译选项
这是最关键的一步。我建议你直接复制下面这行,它几乎覆盖了所有主流硬件加速:
./configure \
--enable-gpl \
--enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-libvpx \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libass \
--enable-libsdl2 \
--enable-vaapi \
--enable-vdpau \
--enable-libmfx \
--enable-cuda \
--enable-cuvid \
--enable-nvenc \
--enable-nvdec \
--enable-ffnvcodec \
--enable-libnpp
注意:如果你用的是 NVIDIA 显卡,还需要安装 NVIDIA Video Codec SDK,并把头文件放到 /usr/local/cuda/include 下。否则编译时会报 ffnvcodec 找不到。
步骤四:编译并安装
make -j$(nproc)
sudo make install
编译时间取决于你的 CPU,一般 5-15 分钟。我建议用 -j$(nproc) 来并行编译,快很多。
步骤五:验证
ffmpeg -encoders | grep -E "nvenc|qsv|amf|vaapi"
如果看到一堆硬件编码器,恭喜你,成功了。
2.4 macOS 上装 FFmpeg(带 VideoToolbox)
macOS 用户最幸福。Apple 的 VideoToolbox 是系统自带的,你只需要装一个 FFmpeg 就能用。
方法一:Homebrew(推荐)
brew install ffmpeg
就这么一行。Homebrew 默认编译的 FFmpeg 已经开启了 VideoToolbox 支持。
方法二:验证
ffmpeg -encoders | grep videotoolbox
输出里应该有 h264_videotoolbox 和 hevc_videotoolbox。
小提示:如果你用的是 Apple Silicon(M1/M2/M3),VideoToolbox 的性能非常强。我在 M1 Max 上测试过,4K H.264 转 H.265 能跑到 120fps 以上,而且功耗极低。
2.5 知识体系总览
下面这张图帮你理清整个环境准备的核心逻辑:
2.6 常见问题与避坑指南
- 问题:ffmpeg 找不到 nvenc
我曾经遇到过,原因是 NVIDIA 驱动版本太低。NVENC 需要驱动版本 >= 470.xx。去 NVIDIA 官网下载最新驱动即可。 - 问题:Linux 编译时报错 "ERROR: ffnvcodec not found"
这是因为你没装 NVIDIA Video Codec SDK。去 GitHub 下载nv-codec-headers,然后make install就行。 - 问题:macOS 上 Homebrew 安装后没有 videotoolbox
检查一下你的 Homebrew 版本。旧版本可能没开启这个选项。运行brew upgrade ffmpeg试试。 - 问题:Windows 上解压后 ffmpeg 命令找不到
环境变量没配好。记得把C:\ffmpeg\bin加到系统 Path 里,然后重启 cmd。
重要提醒:硬件加速编码器通常有并发限制。比如 NVIDIA 的 NVENC,消费级显卡(GTX/RTX)最多支持 2 路并发编码,专业卡(Quadro/RTX A 系列)才支持无限路。如果你在做转码集群,记得算好这个限制。
好了,环境准备就到这里。你装好之后,记得跑一下 ffmpeg -encoders 看看输出。如果看到那些硬件编码器名字,说明你已经准备好了。接下来,我们就可以真正开始玩硬件加速转码了。