1. FFmpeg 基础与环境搭建
各位同学好,我是你们的讲师。咱们这门课叫《FFmpeg分段转码与拼接处理》,说白了就是教你用FFmpeg这把瑞士军刀,把视频拆开、处理、再拼回去。第一章,咱们先把地基打牢——聊聊FFmpeg是什么,怎么装,怎么验证它跑起来了。
1.1 FFmpeg 发展史:一个开源项目的逆袭
FFmpeg 诞生于2000年,由法国程序员 Fabrice Bellard 发起。你可能没听过这个名字,但他还搞过 QEMU(虚拟机)和 TinyCC(微型C编译器)——是个真正的极客大神。
最开始,FFmpeg 只是个命令行工具,能处理视频编码。后来社区壮大,贡献者越来越多。我记得2011年左右,我还在用老版本的 FFmpeg 做视频转码,那时候支持的格式还没现在这么全。现在呢?它几乎能处理你能想到的所有音视频格式。
为什么叫 FFmpeg?FF 代表 Fast Forward(快进),mpeg 是 Moving Picture Experts Group(运动图像专家组)的缩写。合起来就是“快速处理视频”的意思。名字很直白,对吧?
核心里程碑:
- 2000年:Fabrice Bellard 发布首个版本
- 2004年:libavcodec 和 libavformat 库成熟,成为行业标准
- 2011年:FFmpeg 被大量商业软件采用(如 VLC、HandBrake)
- 2015年:支持硬件加速编码(NVIDIA NVENC、Intel QSV)
- 2020年至今:全面支持 AV1、VVC 等新一代编码标准
1.2 FFmpeg 核心功能:它到底能干什么?
说白了,FFmpeg 就是一个音视频的“万能转换器”。你给它一个输入,它就能按你的要求输出。我经常跟团队说:“只要你能想到的音视频操作,FFmpeg 基本都能干”。
它的核心功能可以归纳为四大块:
| 功能模块 | 说明 | 常用场景 |
|---|---|---|
| 转码 | 改变编码格式(如 H.264 → H.265) | 压缩视频、兼容播放器 |
| 封装 | 改变容器格式(如 MP4 → MKV) | 调整封装、提取流 |
| 滤镜 | 处理画面/音频(缩放、裁剪、水印) | 视频编辑、特效添加 |
| 流处理 | 分离/合并音视频流 | 提取音频、替换音轨 |
你想想看,一个工具能同时搞定编码、封装、滤镜、流处理,这得多强大?而且它还是开源的,免费使用。我在项目中遇到过不少商业转码软件,收费高不说,功能还没 FFmpeg 全。所以,学 FFmpeg 绝对是值得的。
1.3 安装与验证:Windows / Mac / Linux 全覆盖
好,理论说完了,咱们动手。安装 FFmpeg 其实很简单,但不同系统有不同套路。我一个个说。
1.3.1 Windows 安装
Windows 用户,我建议你走官方渠道。别去第三方网站下,容易踩坑。
- 打开 ffmpeg.org,点击 Download
- 选择 Windows 版本,推荐下载 gyan.dev 编译版(稳定、更新及时)
- 解压到
C:\ffmpeg目录 - 配置环境变量:将
C:\ffmpeg\bin添加到系统 PATH - 打开 cmd,输入
ffmpeg -version验证
小技巧: 我个人习惯把 FFmpeg 放在 C:\tools\ffmpeg 下,这样好管理。另外,配置环境变量后记得重启 cmd,否则不生效。
1.3.2 macOS 安装
Mac 用户就幸福多了。用 Homebrew 一行命令搞定:
brew install ffmpeg
如果你没装 Homebrew,先去 brew.sh 装一下。装完 FFmpeg 后,验证:
ffmpeg -version
嗯,这里要注意:macOS 自带的 ffmpeg 可能版本很老。我建议用 Homebrew 装最新版,因为新版支持更多编码器和硬件加速。
1.3.3 Linux 安装
Linux 用户,你们应该最熟悉命令行。不同发行版命令略有不同:
| 发行版 | 安装命令 |
|---|---|
| Ubuntu / Debian | sudo apt install ffmpeg |
| CentOS / RHEL | sudo yum install ffmpeg(需先启用 EPEL) |
| Fedora | sudo dnf install ffmpeg |
| Arch Linux | sudo pacman -S ffmpeg |
避坑指南: 我曾经在 CentOS 上直接用 yum install ffmpeg,结果装了个空壳——没有编码器支持。后来才发现需要先装 EPEL 和 RPM Fusion 仓库。所以 Linux 用户装完后一定要验证编码器支持情况。
1.4 验证安装:确认 FFmpeg 能正常工作
装完别急着走,咱们得确认它真的能用。打开终端,输入:
ffmpeg -version
你会看到类似这样的输出:
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-nonfree ...
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 1.100 / 57. 1.100
看到这些库版本信息,说明安装成功了。其中 libavcodec、libavformat、libavfilter 是核心库,咱们后面会频繁用到。
再测试一个简单的转码命令:
ffmpeg -i input.mp4 output.avi
随便找个视频文件试试。如果没报错,生成一个 output.avi,那就稳了。
验证清单:
- ✅
ffmpeg -version显示版本信息 - ✅
ffmpeg -encoders列出编码器(至少几十个) - ✅
ffmpeg -decoders列出解码器 - ✅ 能成功转码一个视频文件
1.5 FFmpeg 知识体系总览
为了让你对 FFmpeg 有个整体认识,我画了一张图。这张图展示了 FFmpeg 的核心组件和它们之间的关系:
这张图你看懂了吗?FFmpeg 命令行是入口,它调用四个核心库完成具体工作。咱们这门课,就是围绕这四个库展开的。后面章节会深入每个库的用法。
1.6 本章小结
好,第一章就到这儿。咱们干了三件事:
- 了解了 FFmpeg 的发展史——从个人项目到行业标准
- 掌握了核心功能——转码、封装、滤镜、流处理
- 完成了安装和验证——Windows/Mac/Linux 全覆盖