FFmpeg 视频压缩
FFmpeg 压缩视频的常用方法和参数说明。
本文讲怎么用 FFmpeg 压缩视频,以及每个参数的含义。
基础命令
ffmpeg -i input.mp4 -b:v 1M output.mp4
每段含义:
| 参数 | 含义 |
|---|---|
ffmpeg | 程序本身 |
-i input.mp4 | -i 是输入,后面是源文件 |
-b:v 1M | -b:v 是视频码率,1M = 每秒 1 Mbit |
output.mp4 | 输出文件名(永远放最后) |
码率是什么? 视频每秒占用的数据量。码率越高,画质越好,文件越大;越低则相反。
方法 1:CRF(推荐)
CRF(Constant Rate Factor,恒定质量)是最简单的压缩方式,选一个质量等级即可:
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 | 较低 | 预览、草稿 |
建议: 从 23 开始。文件太大改 28,画质不够改 20。
方法 2:指定文件大小
需要控制文件大小时用码率模式:
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M output.mp4
常见码率:
500K= 每秒 500 Kbit(小文件,画质一般)1M= 1 Mbit(中等)2M= 2 Mbit(画质好)5M= 5 Mbit(高画质)
编码速度:preset
-preset 控制编码速度:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4
| Preset | 速度 | 文件大小 |
|---|---|---|
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(Full HD)scale=-2:720→ 720p(HD)scale=-2:480→ 480p(SD)
顺手压缩音频
加上音频压缩,文件能再小一些:
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 Kbit/s |
音频码率参考:
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 |