iOS 11 以及 macOS High Sierra 最广为人知的新特性之一就是对 HEVC (H.265) 的支持。这种更高效的视频编码格式据称能减少 40% 的文件体积,这对喜欢用手机拍摄视频,尤其是 4K 视频的用户来说是个好消息。但这个新功能对于以前拍摄的视频并没有帮助,因为新的操作系统不会自动帮你重新用 HEVC 编码那些视频。幸运的是,我们仍然可以用 FFmpeg 来做到。

安装 FFmpeg

在 Mac 上可以用 Homebrew 来安装:

$ brew install ffmpeg --with-x265

转码

$ ffmpeg -i input.mov -c:v libx265 -tag:v hvc1 -preset medium -crf 28 -c:a copy output.mp4

参数解释:

-c:v libx265
选择 libx265 作为视频编码器
-tag:v hvc1
将视频轨道标记为 hvc1,而不是默认的 hev1,否则 macOS 和 iOS 不能播放
-preset medium
(可选)编码方法预设,默认是 medium,这个设置主要用于权衡编码速度和文件大小
-crf 28
(可选)恒定码率因数,默认是 28,这个设置决定需要的视频质量
-c:a copy
直接拷贝音频数据,不做修改

关于可以自定的设置参数,请见 Encode/H.265。更多 FFmpeg 使用方法,可参考阅读《给每个人的 HTML5 视频》

经过以上编码过程后,视频的体积会减少很多。我用以上参数压缩了一段用 GoPro 拍摄的,长度为 3 分钟的 1080/30p 视频,大小仅 20M 左右,且没有明显的画质损失。考虑到源文件 500M 左右的大小,十分惊人。如果提高码率,例如设置 -crf 16,可能肉眼就很难区分出和源文件的区别了。