视频压缩工具箱
文章专栏 / 命令行工具

FFmpeg 视频压缩命令大全

发布于 2025-11-12 · 阅读约 20 分钟 · 视频压缩工具箱编辑部

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功能强大,本文只介绍了压缩相关的核心命令。掌握这些命令后,你可以通过组合不同参数实现任何压缩需求。建议收藏本文作为速查手册,需要时快速查找。

#FFmpeg #命令行 #批处理 #视频压缩

相关文章

← 返回文章列表