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 用户,我建议你走官方渠道。别去第三方网站下,容易踩坑。

  1. 打开 ffmpeg.org,点击 Download
  2. 选择 Windows 版本,推荐下载 gyan.dev 编译版(稳定、更新及时)
  3. 解压到 C:\ffmpeg 目录
  4. 配置环境变量:将 C:\ffmpeg\bin 添加到系统 PATH
  5. 打开 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 核心知识体系 FFmpeg 命令行 libavformat 封装/解封装 libavcodec 编解码 libavfilter 滤镜处理 libswscale 图像缩放/色彩转换 转码压缩 格式转换 视频编辑 流媒体处理 FFmpeg 命令行调用底层库 实现音视频的编解码、封装、滤镜和缩放 本章重点:安装 FFmpeg 并验证核心库可用

这张图你看懂了吗?FFmpeg 命令行是入口,它调用四个核心库完成具体工作。咱们这门课,就是围绕这四个库展开的。后面章节会深入每个库的用法。

1.6 本章小结

好,第一章就到这儿。咱们干了三件事:

  • 了解了 FFmpeg 的发展史——从个人项目到行业标准
  • 掌握了核心功能——转码、封装、滤镜、流处理
  • 完成了安装和验证——Windows/Mac/Linux 全覆盖