HandBrakeCLI 是 HandBrake 的命令行版本,把视频重新编码成更小的体积。它自带 107 个预设,从「Very Fast 2160p60 4K AV1」到「Android 720p30」,选一个名字就能跑;也能手动指定编码器、码率和滤镜。
预设之间的差距比想象中大。同一段 30 秒 1080p 视频,最快的预设 4.8 秒压到 16.7 MB,最慢的 26.6 秒压到 34.2 MB——多花 5.5 倍时间,换来的是体积翻倍、画质更好。
命令行用法
HandBrakeCLI --version
HandBrakeCLI -i input.mp4 -o output.mp4 --preset "Fast 1080p30"
HandBrakeCLI -z # 列出全部预设
HandBrakeCLI --preset-list
核心就三个参数:-i 输入、-o 输出、--preset 预设名。预设名要一字不差,写错直接失败。-z 会把 107 个预设连描述一起列出来,找 1080p 相关的可以直接筛。
exe 本体 74365952 字节(70.9 MB),因为它把 x264、x265、SVT-AV1、FFmpeg 这些编码器全静态链进去了。没有安装过程,也不需要额外的运行库。
四个预设的实测对比
样本是用 ffmpeg 生成的 30 秒 1080p 测试视频,源文件 71.7 MB、码率 20 Mbps。同一台机器,各跑一次:
| 预设 | 耗时 | 输出 | 体积下降 | 码率 |
|---|---|---|---|---|
| Very Fast 1080p30 | 4.8 秒 | 16.7 MB | 76.7% | 4.67 Mbps |
| Fast 1080p30 | 8.2 秒 | 23.7 MB | 66.9% | 6.64 Mbps |
| HQ 1080p30 Surround | 13.0 秒 | 30.7 MB | 57.2% | 8.58 Mbps |
| Super HQ 1080p30 Surround | 26.6 秒 | 34.2 MB | 52.3% | 9.57 Mbps |
| Very Fast 到 Super HQ 的倍数 | 5.5 倍 | 2.05 倍 | — | 2.05 倍 |
从 Very Fast 换到 Super HQ,耗时涨 5.5 倍(4.8 到 26.6 秒),体积从 16.7 涨到 34.2 MB。注意体积是变大了——预设越慢画质越好,在同样的目标画质下它敢保留更多细节,所以文件反而更大。想要更小就用更快的预设或者降分辨率。
想压缩体积又不至于糊,中间那两个预设更实际:Fast 8.2 秒、23.7 MB,画质比 Very Fast 好一档。
手动控制质量:CRF
预设是给不想调参的人用的。要精确控制质量,直接给编码器和 CRF:
| CRF | 耗时 | 输出 | 体积下降 |
|---|---|---|---|
| 18 | 7.3 秒 | 35.4 MB | 50.7% |
| 23 | 7.1 秒 | 22.4 MB | 68.8% |
| 28 | 5.8 秒 | 10.8 MB | 85.0% |
| CRF 18 到 28 的体积倍数 | — | 3.3 倍 | — |
CRF 数字越小画质越高、体积越大。18 到 28 之间体积差 3.3 倍(35.4 到 10.8 MB),耗时只差 1.5 秒。x264 的常用区间是 18 到 28,23 是默认值,28 已经能看出压缩痕迹。
命令是 -e x264 -q 23,-q 后面跟的就是 CRF 值。这段素材从 18 走到 28,体积依次是 35.4 MB、22.4 MB、10.8 MB,每 5 个数字掉一半左右;耗时却是 7.3 秒、7.1 秒、5.8 秒,几乎不动。所以调 CRF 是在拿体积换画质,跟速度关系不大。
预设名写错就是失败
> HandBrakeCLI -i source.mp4 -o out.mp4 --preset "Slow 1080p30"
(没有这个预设)
HandBrake has exited.
退出码 2
> HandBrakeCLI -i nofile.mp4 -o out.mp4 --preset "Fast 1080p30"
HandBrake has exited.
退出码 2
1080p30 这一档只有四个预设:Very Fast、Fast、HQ、Super HQ。没有「Slow 1080p30」,写这个会直接退出,退出码 2,输出文件不生成。输入文件不存在也是退出码 2,错误信息都是同一句「HandBrake has exited.」,区别只在前面几行的日志里。
所以脚本里不要靠错误文字判断原因,先检查输入文件是否存在,再检查预设名是否在 -z 的输出里。
什么时候用它
批量压手机里录的视频。一条命令一个文件,配个 for 循环就能整目录处理,不需要开 GUI。
要嵌进自动化流程。录制完自动转码、自动上传,HandBrakeCLI 没有交互界面,退出码明确,适合挂脚本。
想精确控制质量。CRF 18 到 28 之间可以按需求调,GUI 里能调的项目命令行都能调。
只有一两个视频要压。70.9 MB 的 exe 加一堆参数,不如直接用图形界面点几下。HandBrake 的 GUI 版本更省事。
要 GPU 加速。这个构建带 nvenc/nvdec(启动日志里有 CUDA 版本),但实测用的是 CPU 的 x264,GPU 编码的速度和画质没测。
还没测的两项:GPU 编码(NVENC)与 CPU 的速度对比 / 4K 素材在 AV1 预设下的表现。前者要看显卡,后者要一段 4K 素材,手上都没有。










