0%

这可能是 Mac 上最佳视频格式转换和压制方案

hb

HandBrake: Open Source Video Transcoder

对于很多视频编辑者来说,Mac 系统是不可或缺的神兵利器。即使是对普通用户而已,我们也有影音娱乐以及偶尔的上传视频需求,这一般会涉及到以下两个问题:

  1. 视频压制
  2. 视频格式转换

视频压制

视频从拍摄到上传到网站一般会经过这样的过程:视频采集,视频剪辑,视频压制,上传。

我们通过手机、相机采集到的视频的码率远超网页视频的码率。举个具体的例子,iOS 设备采集的视频码率大约在 50 Mbps,相比而言 Bilibili 弹幕网对超清视频的要求上限是 1.8 Mbps,一旦超过这个码率,视频会被官方重新压制(官方压制后的清晰度惨不忍睹)。所以我们必须自力更生压制出适用于 B 站上传的「高质量」视频——码率无限趋近于 1.8 Mbps 却又不超过 1.8 Mbps,以保证视频原有的分辨率和帧率

码率即每秒钟传输的信息量,例如一部动画每秒钟为 30 张画面(30 帧),每张画面大小为 1 Mb,那么该动画视频的码率即为 30 Mbps,低码率的视频具有相对来说更低的视频文件体积大小。

视频格式转换

为什么要统一 Mac 系统下的视频格式?在 Windows 下随手下载一个XX影音就能解决几乎所有类型的视频的解码问题。在 Mac 下也是一样的,但是 Mac 系统有个好玩的功能——快速预览(QuickLook)——在任何文件上敲击「空格」键,可以快速预览文件内容。比如,可以快速预览 PDF 文件每一页的内容,而不需要打开 PDF 阅读器,快速播放音乐文件而不需要打开音乐播放器,快速预览图片自不必说以及快速预览视频。但尴尬是,目前快速预览视频仅限于 mp4 和 mov 格式。因此我们要进行格式转换,使电脑中常用的视频文件格式统一为 mp4 和 mov。

rm

上图为无法预览的 rm 格式文件

Mac 上压制视频的常用方案

上述两款软件均可以进行高质量的视频压制和格式转换,但这里所谓的「高质量」并不是我们想要的「高质量」,而是指压制出来的视频码率仍然很高,超出了 1.8 Mbps 的限制。此外,它们具有 GB 级别的体积,作为 Mac 软件来说实在太大了,就 Final Cut Pro 而言还有很多普通用户用不到的专业功能,完全就是多余。

Handbrake

相较之下 Handbrake 就显得小巧精悍了,它仅有不到 30 MB 的体积。先来看一下它的主界面,不要马上就被它复杂的交互界面吓到,只要记住下面列出的几点即可。即便记不住也没关系,根据下面会介绍例子自己练习一次也就熟悉了。

handbrake1

  • 源文件路径:显示你目前正在处理的文件路径,导入源文件可以通过右上角的「Source」按钮选择文件,也可以直接拖动源文件到 Handbrake 界面下导入
  • 目标文件路径:压制/转换后视频的存储路径
  • 格式:目前有 mp4 和 mkv 两种格式
  • 编码设置:这部分是重点,在下面将会举例说明
  • 画幅设置:这部分是重点,在下面将会举例说明
  • 预览:完成编码设置之后可以通过这里看最终效果,可以预览静帧画面质量以及视频中任意部分 15 秒内动态画面质量
  • 首选项:除了预设的一些模板之外还可以存储用户自定义的「编码设置+画幅设置」

下面按之前提到的两个问题说明它的使用方法。

1. 视频格式转换

把之前无法快速预览的「[国产经典动画.十二生肖的故事].01.rm」文件拖入 Handbrake,然后目标文件设置为桌面,得到

source

进行简单的视频格式转换时,由于我们没有对视频体积、码率的要求,所以只要使用默认设置进行转换即可,直接点击左上的「Start」,等待转换完成就可以了。

转换后的十二生肖动画在 Mac 下可以利用 QuickLook 直接预览,视频预览还可以拖动进度条,占用的系统资源也比较少:

12shengxiao

经笔者测试,在保证相同视频质量的同时,除 mkv 格式的视频之外,其他格式的视频在转换为 mp4 格式后,体积都减小了,统一视频格式的同时还可以省下更多的空间,

wst

如果选择「Add to Queue」,还可以用同一套设置去批量转换视频格式,读者可以自己研究一下。

下面对默认设置里重要的两部分加以说明。

编码设置

encoding

  • Quality
    • Constant Quality: RF 20 这里的 RF 值越低视频质量越高,RF 值在 22 以内就已经具有很高的质量,所以我们按照默认值 20 转换格式即可。
    • Average Bitrate (kbps): 未选择(这在下一部分说)
  • Video Codec: H.264(x264) 选择此项无可厚非,这是主流视频编码器,具有小体积高质量的优点
  • Encoder Options
    • Preset: medium(笔者认为此项是视频压制的精髓,这一项决定了编码的速率,同时也决定了编码的精细程度,速率越快 Handbrake 的压制越马虎,效果越差,速率越慢,Handbrake 的压制越仔细,越能得到高质量低码率的视频)
    • Tune: none(out of film, animation, and so on)

画幅设置(Picture Settings)

picture1

  • 画幅设置中的 Cropping 裁边模式默认为 Automatic 自动裁边,这会起到去除黑边的作用,但有时候我们不需要去除黑边,只要改选为 Custom,然后把下面四个数值都设置为 0 即可
  • Anamorphic 默认下是 Loose,意思就是让视频的分辨率能够自适应为下面数值为「Modulus」倍数的分辨率(比如说 1920×1080,其中 1920 是 2 的倍数),对于 1921.6×1080.9 这样奇怪的分辨率(仍然是 16:9 比例)在 Loose 设置下能自适应为 2 倍数分辨率,即1921.6×1080.9(非 2 倍数分辨率)→ 1920×1080(2 倍数分辨率),可以看出它是会牺牲部分分辨率的,不过 Modulus 倍分辨率将具有更高的压制效率。
  • Filter 里可以设置 decomb 部分反交错和 deinterlace 完全反交错。分别适合部分交错视频和完全交错视频的修正。交错可以简单理解为重影,就像下面这个样子。
    interlace

2. 视频压制

接下来介绍的是 B 站 60 帧超清视频压制的实例。不过首先推荐各位 App Store 一款查看视频文件信息的免费软件 Media-Info。它可以帮助你查看视频文件的所有信息,包括文件大小、时长、码率、编码格式、分辨率、帧率等等。

先用 Media-Info 查看一下将要压制的视频信息

ow
  • Bit rate(码率): 20352 kbps(= 20.352 Mbps)
  • Width: 1600
  • Height: 900
  • *interlace(比较少见,但如果出现了,就需要在画幅设置中的Filter里把 decomb 改为 deinterlace,否则视频压制后可能出现重影现象)
    (对视频压制而言,重要的也就这几个啦)

这是我录制的一个 1600×900 分辨率、60 FPS 的游戏视频,它的码率实在是太高了,直接上传到B站上,肯定会被官方压得不成样子,而且帧率是肯定会被降到 30 FPS,极其影响观感。

我们在默认设置上进行修改,设置如下:

编码设置

  • Quality:一定要改成 Average Bitrate (kbps) 自定义平均码率并勾选「2-pass encoding」,而不是 Constant Quality 玄学码率。因为是平均码率,我们保险起见设置为 1650 kbps,保证视频每一部分的码率都不超过 1800 kbps。「2-pass encoding」即二次压制,对一次视频进行两次压制,好比铺设马路,压路机在铺好的水泥上压过一回之后回头再压一回,使得第一次压制不平整的区域更加平整。如果担心太慢也可以再勾选「Turbo first pass」,这样会使第一次压制快速进行。
  • Preset:设置为 veryslow 或者 placebo。从 20352 kbps 疯狂压制到 1650 kbps 必然会损失大量的视频信息,所以我们必须让 Handbrake 仔仔细细地压制,使视频中结构简单的大色块画面成分尽量压小,结构细致的画面成分尽量保留,挤出视频这块海绵里所有的水分,但是又不破坏海绵中的纤维结构。
  • Tune: 这个可以不改,默认为 none。如果是游戏或动画视频,笔者建议改为 animation。

设置结果如下

encoding1

画幅设置

因为是上传到 B 站的视频,那么其比例为 16:9,因为视频原本就是 16:9 的格式,如果 automatic 有自动裁边我们就要将它改选为 custom,但是这里 automatic 的数值均为0,所以画幅设置里不需要修改任何设置。

picture2

设置结束之后,我们点击「Start」开始压制,这段仅30秒的视频竟然压制了5分钟,可想而知一部90分钟以上的电影在这套设置下需要压制多久了。不过回报也是值得的,视频大小从 87 MB 被压缩到了 8.4 MB。

compressed

这样的视频文件可以保证其 1600×900 分辨率,60 帧的质量,上传到B站后而不会损失任何画质。

结语

存储下自己常用的压制配置到 Presets 里,流程就可以简化为拖入源文件 - 选择首选项 - Start!

done