FFmpeg 是什么
本教程共 32 篇 · 第 1 篇 · 更新于 2026-08-09 · 约 4 分钟阅读
本节目标:搞懂 FFmpeg 在音视频世界里的位置,知道它由哪几部分组成,以及后续能拿它做什么。
一句话定位
FFmpeg 是一套开源的音视频处理工具集。它能录制、转换、剪辑、串流几乎所有你见过的音视频格式。
你可能没直接用过它,但很多软件背后都是它在干活:浏览器、播放器、直播软件、视频网站,都在调用 FFmpeg。它被称为音视频界的「瑞士军刀」。
本教程基于 FFmpeg 9.0 “Lei”(2026-08-04 发布),所有命令都在这个版本上验证过。
三个命令行工具
安装 FFmpeg 后,你会得到三个可执行文件,它们各有分工。
ffmpeg:主力处理工具
ffmpeg 是最常用的那个。它负责读入一个文件,做处理,再输出另一个文件。转码、剪辑、拼接、加水印、抽音频、做 GIF,全靠它。
ffmpeg -i input.mp4 output.avi
上面这条命令的意思是:读入 input.mp4,输出 output.avi。短短一行,背后已经跑完了解封装、解码、编码、封装四步。
ffplay:极简播放器
ffplay 是一个基于 SDL 的轻量播放器。它能直接播放文件,也能播放网络流。调试时用它快速看结果,比打开大型播放器顺手得多。
ffplay input.mp4
播放时按 q 或 Esc 退出,f 全屏,p/空格暂停,左右方向键快退快进。
ffprobe:信息侦察兵
ffprobe 专门用来「看」文件。它不做转换,只输出元信息:时长、分辨率、帧率、码率、用了什么编码器、有几条音轨。
ffprobe input.mp4
写脚本或排查问题时,ffprobe 是你的第一选择。
八个底层库
FFmpeg 不只是三个 exe,它的核心是八个 C 语言库。命令行工具只是这些库的「外壳」。
- libavformat:处理各种容器格式(MP4、MKV、TS、FLV 等)的封装和解封装。
- libavcodec:音视频编解码器的大本营,H.264、AAC、VP9 都在这里。
- libavutil:工具函数库,内存、数学运算、字符串处理都靠它。
- libavdevice:采集摄像头、麦克风、屏幕等输入输出设备。
- libavfilter:滤镜框架,缩放、裁剪、水印、淡入淡出都在这里。
- libswscale:图像缩放和像素格式转换。
- libswresample:音频重采样,比如采样率、声道数转换。
- libpostproc:后期处理,做一些画面优化。
Tip本教程只讲命令行,不写 C 代码。但知道这些库的分工,能帮你理解为什么某个选项会出现在这里。
FFmpeg 能做什么
列几个常见场景,你心里有个底:
- 格式转换:MP4 转 MKV,AVI 转 MP4,FLAC 转 MP3。
- 剪辑截取:剪掉片头片尾,截取其中一段,合并多个片段。
- 提取音视频:把视频里的音乐单独存成 MP3,或者把音轨去掉只留画面。
- 调整参数:改分辨率、降码率、换帧率、压缩体积。
- 截图与缩略图:某一秒截一张图,或者每隔几秒截一张生成拼图。
- 滤镜处理:缩放、裁剪、旋转、加文字水印、画中画、淡入淡出。
- 字幕处理:把字幕封进文件里,或者直接烧录到画面上。
- 流媒体:推 RTMP 直播、切片成 HLS、拉流保存。
- 设备采集:录屏、录摄像头、录麦克风。
这些场景,后续章节会一个个讲清楚。
为什么学命令行
市面上有很多图形界面工具,比如 HandBrake、ShanaEncoder、格式工厂。它们底层大多也是 FFmpeg。
学命令行的好处有三个:
- 可脚本化:一批文件用循环一条命令搞定,不用逐个点鼠标。
- 参数可控:每个选项清清楚楚,不被软件的预设「黑箱」。
- 服务器可用:远程机器上没有图形界面,SSH 上去只能敲命令。
别被命令行吓到。FFmpeg 的命令虽然长,但结构非常固定,记住几个核心选项就够用了。下一章我们先把它装上。