FFmpeg入门:安装、配置与常用命令行工具

说实话,FFmpeg 是我工具箱里最离不开的东西之一。做多媒体流系统这些年,从转码、切片到流媒体封装,几乎每天都在跟它打交道。这一章,咱们就把它装好、配好,再上手几个最常用的命令。

别小看这一步。我见过不少新手,装完 FFmpeg 就跑,结果遇到「找不到库」「编码器不支持」之类的问题,折腾半天。嗯,咱们一次搞定。

FFmpeg 是什么?

FFmpeg 是一个开源的多媒体处理框架。说白了,它能处理几乎所有你能想到的音视频格式——转码、剪辑、拼接、提取音频、推流、录屏……功能极其强大。

它的核心组件就几个:

  • ffmpeg:主程序,负责转码、处理音视频
  • ffplay:一个轻量级播放器,用来快速预览
  • ffprobe:分析工具,查看媒体文件的详细信息

我个人习惯把这三个工具都装上,因为工作中几乎都会用到。

核心提示:FFmpeg 本身是命令行工具,没有图形界面。别怕,命令行反而更高效。你想想看,一条命令就能批量处理几百个文件,GUI 工具能做到吗?

安装与配置

不同操作系统安装方式不太一样。我分别说一下。

Windows 安装

  1. 去 FFmpeg 官网下载 Windows 构建版(我推荐 BtbN 的 builds)
  2. 解压到 C:\ffmpeg 目录
  3. 把 C:\ffmpeg\bin 添加到系统环境变量 PATH 中
  4. 打开 cmd,输入 ffmpeg -version 验证

小技巧:我习惯把 FFmpeg 放在 C:\tools\ffmpeg 下,这样方便统一管理。另外,记得把 ffplay.exe 和 ffprobe.exe 也放在同一个 bin 目录里。

macOS 安装

用 Homebrew 最省事:

brew install ffmpeg

这条命令会自动安装 FFmpeg 以及大部分常用编码器。我曾经踩过一个坑——默认安装可能不带 libx264,需要加参数:

brew install ffmpeg --with-x264

不过现在新版 Homebrew 默认已经包含了,你可以装完后用 ffmpeg -encoders | grep x264 确认一下。

Linux 安装

Ubuntu/Debian 系:

sudo apt update
sudo apt install ffmpeg

CentOS/RHEL 系:

sudo yum install epel-release
sudo yum install ffmpeg ffmpeg-devel

注意:Linux 下如果遇到「libx264 not found」的错误,说明系统没有安装 x264 编码器。你需要先编译安装 x264,或者启用第三方仓库(如 RPM Fusion)。我曾经在 CentOS 7 上折腾了一下午才搞定,后来干脆用 Docker 了。

验证安装

装完之后,跑一下这条命令:

ffmpeg -version

你会看到类似这样的输出:

ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-nonfree ...
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 / 9.  3.100
libswscale      7.  1.100 / 7.  1.100
libswresample   4. 10.100 / 4. 10.100
libpostproc    57.  1.100 / 57.  1.100

看到这些库版本号,说明安装成功了。注意看 configuration 那一行,里面列出了启用的功能模块。如果缺少某些编码器,后面转码时会报错。

常用命令行工具

FFmpeg 的命令行参数非常多,但常用的其实就十几个。我按使用频率给你列一下。

ffmpeg 基本语法

ffmpeg [全局参数] [输入文件参数] -i 输入文件 [输出文件参数] 输出文件

举个例子:

ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4

这条命令把 input.mp4 转码为 H.264 视频 + AAC 音频。参数说明:

  • -c:v libx264:视频编码器用 libx264
  • -c:a aac:音频编码器用 AAC

常用操作速查表

操作 命令示例 说明
格式转换 ffmpeg -i input.avi output.mp4 自动选择编码器
提取音频 ffmpeg -i input.mp4 -vn -c:a copy output.aac -vn 表示不要视频
截取片段 ffmpeg -i input.mp4 -ss 00:01:00 -t 30 output.mp4 从第1分钟开始,截取30秒
调整分辨率 ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4 缩放到720p
合并视频 ffmpeg -f concat -i filelist.txt -c copy output.mp4 需要先创建文件列表
推流到RTMP ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/stream -re 表示按原速读取

我的经验:刚开始用 FFmpeg 时,别急着背参数。记住 -i(输入)、-c(编码器)、-vf(视频滤镜)、-af(音频滤镜)这四个就够了。其他参数用到时再查文档,慢慢就熟了。

音视频文件信息查看

这是 ffprobe 的强项。我几乎每天都会用它来检查文件。

快速查看基本信息

ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

输出 JSON 格式的信息,包含:

  • 文件格式、时长、比特率
  • 视频流:编码器、分辨率、帧率、像素格式
  • 音频流:编码器、采样率、声道数、比特率

如果你只想看人类可读的版本:

ffprobe -v quiet -show_format -show_streams input.mp4

只看视频流信息

ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name,width,height,r_frame_rate,bit_rate input.mp4

只看音频流信息

ffprobe -v quiet -select_streams a:0 -show_entries stream=codec_name,sample_rate,channels,bit_rate input.mp4

避坑指南:我曾经遇到一个视频,ffprobe 显示时长是 10 分钟,但实际播放到 8 分钟就结束了。原因是文件头里的 duration 字段写错了。遇到这种情况,可以用 -show_packets 参数查看实际数据包的时间戳,那才是真实时长。

本章知识体系

下面这张图帮你理清 FFmpeg 入门阶段的核心脉络:

FFmpeg入门知识体系 FFmpeg入门知识体系 FFmpeg 工具集 ffmpeg(转码处理) ffplay(播放预览) ffprobe(信息分析) 安装方式 配置环境变量 验证安装 常用操作:转码/提取/截取 常用操作:缩放/合并/推流 信息查看:ffprobe 核心思路 安装 → 配置 → 验证 → 掌握常用命令 → 学会用 ffprobe 分析文件 遇到问题先查 -help,再查官方文档,最后看社区

避坑指南与个人经验

最后分享几个我踩过的坑,希望能帮你省点时间。

  • 路径问题:Windows 下如果路径包含中文或空格,记得用双引号包起来。比如 ffmpeg -i "C:\我的视频\test.mp4"。我曾经因为没加引号,排查了半天。
  • 编码器缺失:转码时如果报 Unknown encoder 'libx264',说明你的 FFmpeg 没有编译 x264 支持。重新安装带 --enable-gpl --enable-libx264 的版本。
  • 推流卡顿:用 -re 参数按原速读取文件,否则 FFmpeg 会以最快速度推流,导致服务器压力过大。我刚开始做直播时没加这个参数,结果服务器直接挂了。
  • ffprobe 显示不完整:有些封装格式(如 FLV)的元数据可能不完整。用 -analyzeduration 100M -probesize 100M 增加分析时长和探测大小,能获取更准确的信息。

嗯,FFmpeg 入门其实不难。装好环境,跑通几个命令,你就能感受到它的强大。后面章节我们会深入具体的转码参数、滤镜、封装格式,一步步把多媒体流系统搭建起来。