注意:代码中的斜杠\可以删除
一、基础压缩命令(画质优先)
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 23 \ # H.264编码,平衡速度与质量
-c:a aac -b:a 128k \ # 音频压缩
-vf "scale='if(gt(a,16/9),1920,-2)':'if(gt(a,16/9),-2,1080)'" \ # 自适应分辨率缩放
-movflags +faststart \ # 优化网络播放
output.mp4
二、核心参数详解
1. 视频编码器选择
编码器 | 适用场景 | 参数示例 |
---|---|---|
libx264 |
兼容性最佳(B站推荐) | -c:v libx264 -preset slower |
libx265 |
体积更小(需B站支持HEVC解码) | -c:v libx265 -preset medium |
2. 码率控制模式
模式 | 参数 | 特点 |
---|---|---|
CRF | -crf 18-28 |
恒定质量(值越低画质越好,体积越大) |
2-Pass | -b:v 6000k |
精确控制体积(需两次编码) |
VBV | -maxrate 6000k -bufsize 12000k |
限制峰值码率,防B站二次压制 |
3. 分辨率缩放
# 缩放到1080p(保持原始宽高比)
-vf "scale=-2:1080"
# 缩放到720p(横向自适应)
-vf "scale=1280:-2"
4. 音频压缩
-c:a aac -b:a 128k # 通用设置(128kbps AAC)
-c:a aac -b:a 64k # 低音质需求(体积更小)
三、实战方案
方案1:快速压缩(适用于1080p)
ffmpeg -i input.mp4 \
-c:v libx264 -preset fast -crf 24 \ # 快速预设+中等画质
-c:a aac -b:a 128k \
-vf "scale=1920:-2" \ # 强制横向分辨率1920
output.mp4
方案2:极限压缩(22GB→4GB内)
ffmpeg -i input.mp4 \
-c:v libx265 -preset slower -crf 26 \ # HEVC高压缩率
-c:a aac -b:a 64k \
-vf "scale=1280:-2" \ # 降分辨率到720p
-x265-params no-sao:deblock=-1,-1 \ # 牺牲细节换体积
output.mp4
方案3:二阶段精确控制(推荐)
# 第一阶段:分析视频
ffmpeg -i input.mp4 -c:v libx264 -preset medium -b:v 5000k -pass 1 -an -f mp4 /dev/null
# 第二阶段:正式编码
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -b:v 5000k -pass 2 \
-c:a aac -b:a 128k \
-movflags +faststart \
output.mp4
四、参数优化技巧
通过调整上述参数,通常可将22GB视频压缩到4GB以内(如1080p H.265@CRF24约可压缩至原体积的1/5)。
预设档位(-preset)
ultrafast > superfast > veryfast > faster > fast > medium > slow > slower > veryslow
越慢的预设压缩率越高,但编码时间更长CRF参考值
- 18-20:接近无损(体积大)
- 23-25:推荐范围(B站适用)
- 26-30:明显画质损失(慎用)
硬件加速(如有NVIDIA显卡)
-c:v h264_nvenc -preset p6 -b:v 6000k # NVIDIA NVENC加速
五、完整命令示例(4K→1080p压缩)
ffmpeg -i 4k_input.mp4 \ -c:v libx265 -preset slow -crf 24 \ -c:a aac -b:a 192k \ -vf "scale=1920:-2" \ # 4K→1080p -tag:v hvc1 \ # 兼容苹果设备 -x265-params psy-rd=2:aq-mode=3 \ # 增强视觉优化 output.mp4
六、注意事项
- 先做测试:用
-ss 00:10:00 -t 60
截取1分钟片段测试效果 - 检查封装格式:B站推荐
MP4
,可用ffprobe output.mp4
验证 - 避免二次压制:原始视频已是H.264/265时,直接调整码率而非重新编码