6月2日 00:01
FFmpeg 是什么?能做什么?核心组件和常用命令入门
FFmpeg 是音视频领域的瑞士军刀——转码、剪辑、录屏、推流、截图、质量分析,一条命令搞定。它不是带界面的软件,而是命令行工具集,所有操作都在终端完成。OBS、VLC、YouTube 后台都用到了 FFmpeg。
FFmpeg 能做什么
- 转码:AVI 转 MP4、H.264 转 H.265、4K 降 1080p
- 剪辑:截取视频片段、合并多个视频、去掉静音段
- 录屏:录制屏幕和摄像头(macOS/Linux/Windows)
- 推流:RTMP 直播推流、生成 HLS 流媒体
- 截图:截取视频帧、批量生成缩略图
- 分析:用 ffprobe 查看视频信息、用 PSNR/SSIM 评估画质
核心组件
FFmpeg 项目包含一组命令行工具和底层库:
| 工具 | 用途 |
|---|---|
ffmpeg | 转码、剪辑、推流(最常用) |
ffprobe | 查看音视频文件信息(不转码,只分析) |
ffplay | 简易播放器(调试用) |
底层库(开发者在自己的程序中调用):
| 库 | 功能 |
|---|---|
| libavformat | 处理封装格式(MP4、MKV、FLV...) |
| libavcodec | 编解码(H.264、AAC、VP9...) |
| libavutil | 通用工具函数 |
| libswscale | 图像缩放和色彩空间转换 |
| libswresample | 音频重采样 |
日常只用 ffmpeg 和 ffprobe 两个命令。库是给开发者写程序用的,普通用户不用管。
最常用的 5 条命令
1. 格式转换
bashffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
2. 视频剪辑
bashffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4
从 1 分钟处截取 30 秒,-c copy 不重编码,秒级完成。
3. 视频截图
bashffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 screenshot.jpg
截取第 5 秒的一帧。
4. 查看视频信息
bashffprobe -v quiet -print_format json -show_format -show_streams input.mp4
输出分辨率、码率、时长、编码格式等所有信息,JSON 格式方便脚本解析。
5. 压缩视频
bashffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow output.mp4
CRF 28 比默认的 23 压得更狠,-preset slow 用更多编码时间换取更小的文件。
安装
bash# macOS brew install ffmpeg # Ubuntu/Debian sudo apt install ffmpeg # Windows # 从 ffmpeg.org 下载,解压后把 bin 目录加到 PATH
安装后跑 ffmpeg -version 确认可用。注意某些发行版的 FFmpeg 可能缺少某些编码器(如 libx265),需要从第三方源安装或自行编译。
命令语法模式
FFmpeg 命令的通用结构:
bashffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件
关键概念:选项的位置很重要。-ss 放在 -i 前面是快速跳转(不精确),放在后面是精确跳转(慢)。-c:v 和 -c:a 是输出选项,必须放在输出文件前面。