Back
Featured image of post 压制小指南

压制小指南

了解视频的封装和编码, 学会简单的压制方法

何为「压制」

压制, 顾名思义, 类似压缩, 就是把视频的大小弄小喽?

其实, 现代语境下的「压制」, 囊括的是一个完整的后期处理流程.

具体而言, 可以分解为四个步骤:

  1. 解码: 把原本的包装 (封装格式mkv等) 拆开, 再把编码过的视频内容提取出来.
    • 此处注意关注「封装格式」「编码格式」的区别 - 见下
  2. 处理: 加料, 小到去黑边, 反交错, 加字幕; 大到整体画面降噪, 锐化, 调色等.
    • 使用 AVS/VS 等不带编码器的解析器添加简单效果 (可以理解为一层 Fliter)
  3. 编码: 弄完啦, 重新把视频剁成臊子.
    • 比如万众瞩目的 Libx264, 小丸的朴素压制就是这个的一套预设参数.
  4. 封装: 包上饺子皮, 让大家认识这是饺子.
    • 如万众瞩目的 mp4box 等, 还有 FFmpeg 的一堆 muxer…

一步步下来, 其实每一步所需的软件都不太一样, 有着各式各样的工具来实现相关功能, 其中大部分是纯粹的命令行工具. 对于专业压制人员而言, 了解与组合使用这些工具就成了必修课.

而需要理解的是, 这是一套流程, 或者说工作流, 是高度组织化和程序化的. 压制流程就像是一块集成电路, 由数个模块构成, 可以使用编程语言来描述整个流程, 形成一层抽象屏障, 让我们不必在意其中的实现细节.

这也就是我们主要面对的封装好的 GUI 软件或 Shell 脚本了, 如果不是专精压制的, 个人使用它们工作已经绰绰有余了. 只需观察和调整其暴露出来的接口, 了解相关的基础知识, 配置好应用环境, 能用就是成功啦.

封装与编码

「封装 format」是一层外壳, 而「编码 codec」是文件的韵律.

这一节我们来对视频的文件结构做一个简单认识, 方便了解相关选项.

我一般用饺子皮和饺子馅的比喻来说明封装和编码的关系, 饮料瓶子和里面装的水同理. 换一层包子皮或者换个瓶子一般不会影响其内容, 但是正确的包装能让你明白「这玩意怎么吃 / 喝」

编码

编码是描述内容的编码形式, 在影像领域一般指图像和声音的压缩方法, 最常用的是 H.264 编码.

简单来说, 如果用 0 和 1 分别代表硬币的正反面, 那么一串字节流就可以在特定的情况下表示若干实验的结果.

对于视频来说, 最朴素的方法就是将每个像素点上的颜色记录下来进行编码, 当然这样的体积一般是我们不能接受的, 需要使用优秀的编码方案来减轻体积.

这里推荐一本书: 《编码:隐匿在计算机背后的语言》, 是我的计算机启蒙书.

编码领域实际上非常复杂, 层层流程都是智慧的结晶, 感兴趣的可以去了解具体的实现方式.

此处也分帧内编码帧间编码: 单帧要做很多次 jpg 那种图像压缩算法; 而帧间要记录数个关键帧和之间的变化, 解码的时候再计算出来中间的帧是什么, 这也是为什么 losslesscut 这种可以在关键帧附近剪辑的软件效率高的原因.

名词解释

  • 通常使用码率这个词来代表每秒数据量的大小, 顾名思义越大视频信息就保留的越多. 但请注意超过素材本身的信息量是无用的, 即渲染码率一般不能超过素材码率.

  • VBRCBR 是分配信息的方案. 前者会根据视频内容分配信息占比, 动态大的场景分配的信息多; 而后者只会进行相对稳定的分配.

格式

大标题我写的是封装, 格式事实上就是一层外壳, 决定了文件以什么样的形式来组织内容, 对应支持的功能不同.

以 MKV 为例, 基本上视频都被封装为了若干条轨道, 有点类似于非编软件中见到的虚拟轨道. 但通常只有一条视频轨, 若干条声音轨, 可能的字幕轨. 其中的内容编码形式会受到格式的制约, 即只能使用格式本身所支持的编码方案.

介绍表格

格式 备注
AVI 古老而巨大的格式,非要使用的话, Xvid 编码比较小
RMVB 低码率下的选择,不利于剪辑,RV40 编码体积相当小
WMV 微软开发的格式,可以使用 DRM 加密 (但兼容性很差)
MP4 Moving Picture Experts Group-4, 最为常见, 支持 H264 编码方案
MKV 开源而广泛的格式,能封装软字幕和大量音轨
MOV Apple 开发的格式,带透明通道,转格式的时候可以考虑 (兼容性好)
FLV 来自 flash,网络传播广泛 (F4V=FLV+H.264)

需要了解什么捏

非编软件输出

编码器

这里就要说我们为啥要压制了, 一般非编软件的输出只能用惨不忍睹来形容, 硕大无比. 只能先渲染出结果, 再用工具压缩一下体积. 如果能一次出片, 谁又想二次压制呢.

  1. Adobe Media Encoder 最好备上, 还能解决一些玄学问题.

  2. Voukoder 是个免费的编码器, 对各种显卡的支持都不错.

网络视频

一般需要传到网上的视频推荐使用的参数:

编码: H.264 in MP4.

码率: 10M for 1080P.

  • 目标码率需要根据原始素材因地制宜.

中转视频

就是给别的做片 man 中转用的视频, 要保证质量足够.

编码: H.264 in QuickTime(mov).

码率与原始素材持平即可, 只看 demo 的话可以 720p-1500K 甚至更低.

音频

编码: AAC.

采样率: 48k Hz.

压制工具

SHELL

命令行工具的介绍移步另一篇视频工具箱.

而懒人脚本这些搜索就能找到比较好用的.

我个人在用这位老哥的, 找这些记得去压制论坛就是了.

GUI

可以使用小丸工具箱 (x264) 进行简单压制 (官网已挂)

简单的压缩流程就是:

  1. 选择视频原始文件
  2. 设置一下 crf, 通常 18~23, 值越小 -> 文件大小增大, 视频更清晰
    • CRF: x264 编码器的一个参数, 需要明晰此处相当于做了一次 VBR 编码
  3. 单击压制, 等待即可

虽然小丸很久没有更新, 作者居然还活在微博上, 但也只停留在236版了.

现在更合理的选择可能是 MeGUI, 但它也停滞很久了.

只能说 GUI 这种东西找个舒心的就可以啦, 能用脚本还是会方便一点.

拓展链接

LoliHouse周年礼包-全套压制工具链

VCB-studio教程专栏

comments powered by Disqus
From lvris~   Built with Hugo
Theme Stack designed by Jimmy