HandBrake 是一款格式转换工具,我通常用它来把非 mp4 的视频转换成 mp4 格式,顺便压缩体积以方便网络传播。
HandBrake 在最近的版本中增加了硬件编码功能,转换格式时可以让 GPU 参与工作,我测试了一下,这样能大幅缩短转换时间。
打开 HandBrake,在界面中间选择 Video 标签,接着点击 Video Encoder 菜单,这里列出了多种编码方式。
其中带有 VideoToolbox 的就是启用了 GPU 编码的选项,上面这张截图是在 mac 上显示的列表。如果你是 win 或 linux 系统,根据 GPU 的不同可能是:
我分别使用 H.264(x264) 和 H.264(VideoToolbox) 对同一个视频进行格式转换,所用时间分别是 16 分 45 秒、5 分 25 秒,可见开启 GPU 会大幅缩短转换时间。
使用 H.264(x264) 编码时,即没有使用 GPU 加速,电脑的 CPU、GPU 使用率如下:
使用 H.264(VideoToolbox) 编码时,即使用了 GPU 加速,电脑的 CPU、GPU 使用率如下:
截图显示,没有使用 hardware encoder 时,电脑 CPU 的使用率接近 95%,GPU 是 0%。开启 hardware encoder,CPU 使用率虽然有所下降,但依然很高,大概为 86%,这时 GPU 的确发挥了作用,使用率是 15% 左右。
H.264(x264) 和 H.264(VideoToolbox) 生成的视频体积分别是 318MB、632MB。虽然除了编码方式之外我没有更改任何其他设置,但这两个视频的码率并不相同,分别是 3.05Mbps、6.07Mbps,这导致了它们体积的差异。
Linus 评测 M1 电脑时,分别用 HandBrake 的 software encode 和 hardware encode 测试了 M1、intel、amd 电脑,结果显示 hardware encode 都能明显缩短转换时间:
参考文章:HandBrake – Convert Files with GPU/Nvenc Rather than CPU