2、环境搭建:Windows/macOS/Linux三平台安装、源码编译与静态构建、验证安装与常用命令测试
说实话,FFmpeg 的环境搭建是很多初学者第一道坎。我见过不少同学在群里问「为什么我装好了跑不起来?」——十有八九是版本冲突或者路径没配好。这一章咱们就把 Windows、macOS、Linux 三个平台都捋一遍,顺便聊聊源码编译和静态构建那些坑。
核心思路:别贪快。先搞清楚你的使用场景——是临时用用,还是深度开发?前者直接装预编译包,后者必须走源码编译。我自己的习惯是:桌面环境用包管理器,CI/CD 环境用静态构建。
2.1 三平台快速安装
先给个速查表,方便你以后忘了回来翻。
| 平台 | 推荐方式 | 命令/步骤 | 备注 |
|---|---|---|---|
| Windows | 官方预编译包 | 下载 .7z 解压 → 配置 PATH | 推荐 BtbN 构建版 |
| macOS | Homebrew | brew install ffmpeg |
会自动处理依赖 |
| Linux (Ubuntu/Debian) | apt | sudo apt install ffmpeg |
版本可能偏旧 |
| Linux (CentOS/RHEL) | EPEL + yum | sudo yum install ffmpeg |
需先启用 EPEL |
2.2 Windows 安装详解
Windows 用户我建议直接去 gyan.dev 或者 BtbN 的 GitHub Releases 页面下载。别去官网那个「Download」按钮——它跳转的是源码,不是二进制。
- 下载
ffmpeg-release-full.7z(选带 shared 的版本) - 解压到
C:\ffmpeg - 把
C:\ffmpeg\bin加到系统环境变量 PATH - 打开 cmd,输入
ffmpeg -version
我曾经遇到过一个问题:解压后直接双击 ffmpeg.exe,窗口闪一下就没了。别慌,这是正常的——FFmpeg 是命令行工具,不是 GUI 程序。你需要在终端里调用它。
2.3 macOS 安装详解
macOS 用户就幸福多了。Homebrew 一把梭:
# 安装 Homebrew(如果没有)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 FFmpeg
brew install ffmpeg
# 验证
ffmpeg -version
Homebrew 会自动拉取 x264、x265、libvpx 等常用编码库。我个人习惯加个 --with-fdk-aac 参数,因为 AAC 编码器在商业场景下更常用。不过要注意,fdk-aac 的许可证和 GPL 不兼容,如果你要分发二进制文件,得用 --enable-nonfree。
小技巧:如果你在 macOS 上遇到「无法验证开发者」的提示,去「系统偏好设置 → 安全性与隐私」里允许运行即可。这是 macOS 的 Gatekeeper 机制在作怪。
2.4 Linux 安装详解
Linux 下最省事的是用包管理器。但有个问题——官方源里的 FFmpeg 版本通常比较老。比如 Ubuntu 20.04 自带的还是 4.2.x,而最新版已经到 6.x 了。
我建议用 static builds 或者 johnvansickle.com 提供的静态构建版:
# 下载静态构建(以 Linux x86_64 为例)
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
# 解压
tar -xf ffmpeg-release-amd64-static.tar.xz
# 直接使用(无需安装)
cd ffmpeg-*-amd64-static
./ffmpeg -version
静态构建的好处是「拎包入住」——所有依赖都编译进去了,不会出现 libavcodec.so.58: cannot open shared object file 这种烦人的错误。
2.5 源码编译:从零开始
为什么要自己编译?说白了,预编译包不一定包含你需要的编码器。比如你想用 libaom-av1 编码 AV1,或者想开启 --enable-libvmaf 做画质评估,那就得自己动手。
我以 Ubuntu 为例,走一遍完整流程:
# 1. 安装编译工具链
sudo apt update
sudo apt install build-essential cmake git pkg-config
# 2. 安装常用编码库依赖
sudo apt install libx264-dev libx265-dev libvpx-dev libfdk-aac-dev libmp3lame-dev libopus-dev
# 3. 克隆 FFmpeg 源码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
# 4. 配置编译选项
./configure --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx \
--enable-libfdk-aac --enable-libmp3lame --enable-libopus \
--enable-nonfree
# 5. 编译(-j 后面的数字是 CPU 核心数,别设太大,小心电脑卡死)
make -j$(nproc)
# 6. 安装
sudo make install
注意:--enable-nonfree 和 --enable-gpl 不能同时和 --enable-libfdk-aac 一起用?其实可以,但生成的二进制文件会受非自由许可证约束。如果你只是自己用,无所谓;如果要分发,得小心许可证问题。
编译时间取决于你的机器。我当年用一台 4 核的笔记本编译,大概花了 15 分钟。现在用 16 核的机器,3 分钟搞定。嗯,硬件升级确实爽。
2.6 静态构建:一次编译,到处运行
静态构建和源码编译的区别在于:静态构建把所有 .so 文件都打包进了一个二进制文件里。你想想看,这样你只需要一个 ffmpeg 文件,就能在任何同架构的 Linux 系统上跑——不需要装任何依赖。
静态构建的编译命令稍微复杂一点:
./configure --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx \
--enable-libfdk-aac --enable-libmp3lame --enable-libopus \
--enable-nonfree --disable-shared --enable-static \
--pkg-config-flags="--static"
make -j$(nproc)
关键参数是 --disable-shared --enable-static。编译出来的 ffmpeg 文件体积会大一些(大概 30-50MB),但胜在省心。
我个人习惯:在 CI/CD 流水线里用静态构建。比如 Docker 镜像里,我直接 COPY 一个静态 ffmpeg 进去,连 apt install 都省了。镜像体积反而更小。
2.7 验证安装与常用命令测试
装完了别急着走。先跑几个命令确认一下:
# 查看版本和编译选项
ffmpeg -version
# 查看支持的编码器(重点看有没有 libx264、libx265)
ffmpeg -encoders | grep libx
# 查看支持的封装格式
ffmpeg -formats | grep mp4
# 查看设备(Windows/macOS 上可以看摄像头)
ffmpeg -devices
然后找个视频文件做转码测试:
# 转码为 H.264
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
# 提取音频
ffmpeg -i input.mp4 -vn -c:a copy audio.aac
# 截图
ffmpeg -i input.mp4 -ss 00:01:00 -vframes 1 snapshot.png
如果这些命令都能跑通,恭喜你——环境搭建成功了。
2.8 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以把它当作「环境搭建决策树」:
2.9 常见问题与避坑
- 「ffmpeg 不是内部或外部命令」——Windows 上 90% 是 PATH 没配好。检查一下
echo %PATH%里有没有你的 ffmpeg\bin 路径。 - 「libx264 未找到」——编译时没装 libx264-dev,或者 configure 时没加
--enable-libx264。回头检查一下依赖。 - 「macOS 上 brew install 报错」——可能是 Xcode Command Line Tools 没装。运行
xcode-select --install补上。 - 「Linux 上 make 到一半卡死」——内存不够了。试试
make -j2减少并行任务数。
最后说一句:环境搭建这东西,第一次折腾可能花一两个小时。但只要你把步骤记下来,下次就是五分钟的事。我自己的笔记里专门有个「FFmpeg 环境搭建备忘」,每次换电脑都照着来一遍,从来没出过问题。