使用 FFmpeg 压缩视频
面向新手的 FFmpeg 视频压缩指南,详细解释每个参数的含义。
本指南介绍如何使用 FFmpeg 压缩视频,并详细解释每个参数的作用。
理解基础命令
ffmpeg -i input.mp4 -b:v 1M output.mp4逐个解释每个部分:
| 参数 | 含义 |
|---|---|
ffmpeg | 我们要运行的程序 |
-i input.mp4 | -i 表示「输入」,后面跟源文件名 |
-b:v 1M | -b:v 表示「视频码率」,1M = 每秒 1 兆比特 |
output.mp4 | 输出文件名(总是放在最后) |
什么是码率? 码率是视频每秒使用的数据量。码率越高 = 画质越好,但文件越大。码率越低 = 文件越小,但画质越差。
方法一:CRF(推荐新手使用)
CRF(恒定质量因子)是最简单的压缩方式,你只需要选择一个质量等级:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4| 参数 | 含义 |
|---|---|
-c:v libx264 | -c:v 表示「视频编码器」,libx264 是 H.264 编码器 |
-crf 23 | 质量等级(0-51)。数值越低 = 画质越好,文件越大 |
CRF 数值参考
| CRF | 画质 | 适用场景 |
|---|---|---|
| 18 | 极佳(几乎无损) | 重要视频存档 |
| 23 | 良好(默认值) | 日常使用 |
| 28 | 一般 | 网络分享、社交媒体 |
| 33 | 较低 | 预览、草稿 |
建议: 从 CRF 23 开始。文件太大就试试 28,画质不够就试试 20。
方法二:指定文件大小
如果需要控制文件大小,使用码率模式:
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M output.mp4常用码率参考:
500K= 每秒 500 千比特(文件小,画质一般)1M= 每秒 1 兆比特(中等)2M= 每秒 2 兆比特(画质好)5M= 每秒 5 兆比特(高画质)
编码速度:预设
-preset 参数控制编码速度:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4| 预设 | 速度 | 文件大小 |
|---|---|---|
ultrafast | 非常快 | 最大 |
fast | 快 | 较大 |
medium | 正常(默认) | 正常 |
slow | 慢 | 较小 |
veryslow | 非常慢 | 最小 |
建议: 快速出片用 fast,最终交付用 slow。
缩小分辨率
分辨率越小 = 文件越小:
ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 23 output.mp4| 参数 | 含义 |
|---|---|
-vf scale=-2:720 | -vf 表示「视频滤镜」,scale 用于调整尺寸 |
-2 | 自动计算宽度,保持原始比例 |
720 | 目标高度,单位是像素(720p) |
常用分辨率:
scale=-2:2160→ 4Kscale=-2:1080→ 1080p(全高清)scale=-2:720→ 720p(高清)scale=-2:480→ 480p(标清)
同时压缩音频
加上音频压缩,进一步减小文件:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4| 参数 | 含义 |
|---|---|
-c:a aac | -c:a 表示「音频编码器」,aac 是常用的音频格式 |
-b:a 128k | 音频码率:每秒 128 千比特 |
音频码率参考:
320k→ 高品质音乐192k→ 优质128k→ 标准(推荐)96k→ 语音够用
完整示例
均衡方案(推荐)
画质好,文件大小合理:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4最小文件
网络分享,画质要求不高:
ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 96k output.mp4最佳画质
存档保存,尽量保持画质:
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k output.mp4使用 FFHub API
把命令发送到 FFHub,在云端处理:
curl -X POST https://api.ffhub.io/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": "ffmpeg -i https://your-storage.com/input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4"
}'注意: 把输入 URL 换成你的实际视频地址。FFHub 处理完成后会返回下载链接。
速查表
| 目标 | 命令 |
|---|---|
| 基础压缩 | ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 |
| 更小文件 | ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4 |
| 更高画质 | ffmpeg -i input.mp4 -c:v libx264 -crf 18 output.mp4 |
| 缩放到 720p | ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 23 output.mp4 |
| 含音频压缩 | ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4 |