FFmpeg是最强大的视频处理工具,命令行操作虽然看起来复杂,但掌握后效率极高。本文收录50+实用压缩命令,每条都附带详细说明。
使用提示
所有命令都可以直接在终端(Mac/Linux)或命令提示符(Windows)中运行。将input.mp4替换为你的输入文件名,output.mp4替换为输出文件名。
基础压缩命令
1. H.264标准压缩
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
说明:最常用的压缩命令,使用H.264编码,CRF 23保持良好画质,medium预设平衡速度和质量。
2. H.265高效压缩
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset medium -c:a aac -b:a 128k output.mp4
说明:使用H.265编码,相比H.264节省40-50%空间,适合4K视频和长期存储。
3. 快速压缩
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast -c:a copy output.mp4
说明:使用fast预设加快编码速度,音频直接复制不重新编码,节省时间。
4. 高质量压缩
ffmpeg -i input.mp4 -c:v libx265 -crf 20 -preset slow -c:a aac -b:a 192k output.mp4
说明:CRF 20接近无损,slow预设获得最佳压缩效率,适合重要视频存档。
分辨率调整
5. 缩放到1080P
ffmpeg -i input.mp4 -vf scale=1920:1080 -c:v libx264 -crf 23 -c:a copy output.mp4
说明:将视频缩放到1920×1080分辨率,保持宽高比用scale=1920:-2。
6. 缩放到720P
ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 -c:a copy output.mp4
7. 按宽度缩放(保持宽高比)
ffmpeg -i input.mp4 -vf scale=1280:-2 -c:v libx264 -crf 23 -c:a copy output.mp4
说明:-2表示自动计算高度并保持偶数(视频编码要求)。
8. 按百分比缩放
ffmpeg -i input.mp4 -vf "scale=iw*0.5:ih*0.5" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:缩放到原始尺寸的50%,iw和ih分别代表输入宽度和高度。
码率控制
9. 固定码率(CBR)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -minrate 2M -maxrate 2M -bufsize 4M -c:a aac output.mp4
说明:恒定2Mbps码率,适合直播推流等需要稳定码率的场景。
10. 可变码率(VBR)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -maxrate 4M -bufsize 2M -c:a aac output.mp4
说明:平均2Mbps,最高4Mbps,允许复杂场景使用更高码率。
11. 两步压缩(高质量VBR)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null && ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 2 output.mp4
说明:第一步分析视频,第二步编码,质量比单步VBR更好。Windows用NUL替代/dev/null。
音频处理
12. 压缩音频
ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 96k output.mp4
说明:只压缩音频到96kbps,视频直接复制,快速减小文件体积。
13. 移除音频
ffmpeg -i input.mp4 -c:v copy -an output.mp4
说明:-an参数移除所有音频轨道。
14. 提取音频
ffmpeg -i input.mp4 -vn -c:a copy audio.aac
说明:-vn移除视频,只保留音频。
15. 替换音频
ffmpeg -i input.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
说明:用新音频替换视频中的原音频。
帧率调整
16. 降低帧率到30fps
ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 23 -c:a copy output.mp4
17. 降低帧率到24fps
ffmpeg -i input.mp4 -r 24 -c:v libx264 -crf 23 -c:a copy output.mp4
说明:电影标准帧率,降低帧率可减小文件体积。
硬件加速
18. NVIDIA NVENC加速(H.264)
ffmpeg -i input.mp4 -c:v h264_nvenc -preset fast -crf 23 -c:a copy output.mp4
说明:使用NVIDIA显卡硬件编码,速度快10倍以上。
19. NVIDIA NVENC加速(H.265)
ffmpeg -i input.mp4 -c:v hevc_nvenc -preset fast -crf 26 -c:a copy output.mp4
20. Intel QuickSync加速
ffmpeg -i input.mp4 -c:v h264_qsv -preset medium -global_quality 23 -c:a copy output.mp4
说明:使用Intel集显或独显的QSV硬件编码。
21. AMD VCE加速
ffmpeg -i input.mp4 -c:v h264_amf -quality speed -rc cqp -qp 23 -c:a copy output.mp4
批量处理
22. Linux/Mac批量压缩
for file in *.mp4; do ffmpeg -i "$file" -c:v libx265 -crf 26 -preset medium "compressed_$file"; done
说明:压缩当前文件夹所有MP4文件,输出文件名前加compressed_。
23. Windows批量压缩
for %i in (*.mp4) do ffmpeg -i "%i" -c:v libx265 -crf 26 -preset medium "compressed_%i"
说明:Windows命令提示符版本。在bat脚本中用%%i替代%i。
24. 递归处理子文件夹(Linux/Mac)
find . -name "*.mp4" -exec ffmpeg -i {} -c:v libx265 -crf 26 {}.compressed.mp4 \;
裁剪与剪切
25. 裁剪视频区域
ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:crop=宽:高:x:y,从左上角(0,0)裁剪1280×720区域。
26. 剪切视频片段(按时间)
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:02:00 -c copy output.mp4
说明:从1分钟开始,剪切2分钟长度,-c copy快速剪切不重新编码。
27. 剪切到结尾
ffmpeg -i input.mp4 -ss 00:01:00 -c copy output.mp4
滤镜应用
28. 去噪
ffmpeg -i input.mp4 -vf "hqdn3d" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:hqdn3d是高质量降噪滤镜,可减少画面噪点。
29. 锐化
ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0" -c:v libx264 -crf 23 -c:a copy output.mp4
30. 去隔行
ffmpeg -i input.mp4 -vf "yadif" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:将隔行扫描视频转为逐行扫描。
31. 添加黑边
ffmpeg -i input.mp4 -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 23 output.mp4
说明:将视频居中添加黑边至1920×1080。
格式转换
32. MP4转WebM
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
33. MP4转GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1" -loop 0 output.gif
说明:降低帧率到10fps并缩小尺寸,GIF文件会很大。
34. MP4转MKV(无损)
ffmpeg -i input.mp4 -c copy output.mkv
说明:只改变容器格式,不重新编码,速度极快。
高级压缩
35. AV1编码(最高压缩率)
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 6 -c:a libopus -b:a 128k output.mp4
说明:AV1比H.265又节省30%空间,但编码极慢。preset 6是速度和质量的平衡点。
36. 10bit编码
ffmpeg -i input.mp4 -c:v libx265 -crf 22 -preset medium -pix_fmt yuv420p10le output.mp4
说明:10bit色深,色彩过渡更平滑,适合高质量视频。
37. 极限压缩
ffmpeg -i input.mp4 -vf scale=640:-2 -c:v libx265 -crf 32 -preset fast -an output.mp4
说明:降分辨率+高CRF+移除音频,体积最小。
字幕处理
38. 嵌入字幕文件
ffmpeg -i input.mp4 -i subtitle.srt -c:v copy -c:a copy -c:s mov_text output.mp4
39. 烧录字幕(硬字幕)
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:字幕永久烧录到画面,无法关闭。
其他实用命令
40. 查看视频信息
ffmpeg -i input.mp4
说明:显示分辨率、编码格式、码率、时长等详细信息。
41. 查看支持的编码器
ffmpeg -codecs | grep video
42. 旋转视频90度
ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4
说明:transpose=1顺时针90度,2逆时针90度,3旋转180度。
43. 镜像翻转
ffmpeg -i input.mp4 -vf "hflip" -c:v libx264 -crf 23 -c:a copy output.mp4
说明:hflip水平翻转,vflip垂直翻转。
44. 合并多个视频
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
说明:filelist.txt内容格式:file 'video1.mp4' 换行 file 'video2.mp4'
45. 视频加速/减速
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" output.mp4
说明:2倍速播放,0.5*PTS视频加速,atempo=2.0音频加速。
实战脚本示例
46. 智能批量压缩脚本(Linux/Mac)
#!/bin/bash
for file in *.mp4; do
size=$(du -m "$file" | cut -f1)
if [ $size -gt 100 ]; then
ffmpeg -i "$file" -c:v libx265 -crf 26 -preset medium "compressed_$file"
fi
done
说明:只压缩大于100MB的视频文件。
47. 带进度显示的批量脚本
#!/bin/bash
count=0
total=$(ls -1 *.mp4 | wc -l)
for file in *.mp4; do
count=$((count+1))
echo "Processing $count/$total: $file"
ffmpeg -i "$file" -c:v libx265 -crf 26 -preset medium "compressed_$file"
done
48. Windows批处理脚本
@echo off
for %%i in (*.mp4) do (
echo Processing %%i
ffmpeg -i "%%i" -c:v libx265 -crf 26 -preset medium "compressed_%%i"
)
echo All done!
pause
说明:保存为.bat文件,双击运行。
常见问题
如何选择合适的CRF值?
CRF值越小质量越好但文件越大。推荐范围:H.264用20-23,H.265用24-28。先用短视频测试不同CRF的效果。
preset参数如何选择?
影响编码速度和压缩效率。日常使用medium或fast,不急用slow,追求速度用fast或veryfast。
为什么压缩后文件更大?
可能原视频已经高度压缩。尝试降低分辨率、提高CRF值,或改用H.265编码。
如何保持原始画质?
使用CRF 18或更低,或用-c:v copy直接复制视频流(仅改容器不压缩)。
快速参考:
- 通用压缩: -c:v libx264 -crf 23 -preset medium
- 高效压缩: -c:v libx265 -crf 26 -preset medium
- 快速压缩: -c:v libx264 -crf 23 -preset fast
- 降分辨率: -vf scale=1280:-2
- 硬件加速: -c:v h264_nvenc -preset fast
FFmpeg功能强大,本文只介绍了压缩相关的核心命令。掌握这些命令后,你可以通过组合不同参数实现任何压缩需求。建议收藏本文作为速查手册,需要时快速查找。