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 1080p304.8 秒16.7 MB76.7%4.67 Mbps
Fast 1080p308.2 秒23.7 MB66.9%6.64 Mbps
HQ 1080p30 Surround13.0 秒30.7 MB57.2%8.58 Mbps
Super HQ 1080p30 Surround26.6 秒34.2 MB52.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耗时输出体积下降
187.3 秒35.4 MB50.7%
237.1 秒22.4 MB68.8%
285.8 秒10.8 MB85.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 素材,手上都没有。