AVCH264编码教程...

  • 格式:docx
  • 大小:32.41 KB
  • 文档页数:16

AVCH264编码教程...

AVC/H264编码教程

原作:DeathTheSheep

翻译:Tenlix

编码次数(应当选择何种编码模式)

如果你想要得到一个确定的文件体积,我推荐采用二次编 码的模式。例如,你希望你生成的文件体积为精确的170.00MB,那么你就需要采用二次或三次编码。严格地说,一次编码针对的是那些严重缺乏时间或者并 不期望得到高质量输出的人。二次编码能够满足大部分人的需要,它可以生成高质量的文件和确切的文件体积。然而,单次编码模式有时候会被用于恒定质量的输 出。如果你想要编码得到的是一个统一的、恒定质量的视频而并不在意文件的体积,那么可以参见下面的“恒定量化和恒定质量模式”部分。

恒定量化和恒定编码模式

如果你并不需要你的视频得到一个固定的、明确的体积, 或者想让编码器来决定分配多大的文件体积来获得最佳的质量,那么可以考虑一下通过“单次编码 - 量化(Single Pass - Quantizer)”或“恒定质量(Constant Quality)”模式来进行固定质量的编码。这两种模式的不同之处在于“恒定质量”模式采用了更为先进的比率控制算法,能够在复杂度较高而人眼不太注重 细节的场景下降低比特率。这就意味着即使质量针对人眼的视觉效果进行了动态分配,它看起来也仍然是恒定的。很多人可能会因为恒定质量模式的这种设计而认为 该模式要更胜一筹,但是如果你编码的是比特率很低的动画视频,量化也许是个更好的选择。

• 确定你在编码选择菜单(A.)中选择了 “单次编码 - 量化”或者“恒定质量”模式。

• 记住更高的量化值或“质量”模式(B.) 将会使视频的实际质量更低,而文件体积会更小。“质量”和量化值相近,但是被乘以了10。

• 除非你是为了存档(收藏)或再现(原来 的)品质,否则请不要使用15(或150)以下的量化值。

• 同样地,也不要使该值大于40(或 400):即使最终的文件体积会小到难以置信,这种编码的质量也会使人难以接受,除非你编码的视频具有极其锐利的画质和反差极大的边缘表现。

• 对大多数热衷于高质量视频的人来说,比较 好的估计值是在20(或200)(最高质量)到30(或300)(相对较低的质量)的范围内,根据个人的偏好和硬盘为编码文件所预备的空间来进行具体选 择。

• 对于卡通动画之类几乎没有什么复杂纹理的 视频可以考虑使用比较高一些的量化值。

• 对于现实的题材,特别是那种具有很多晦暗 的场景和重要而精细的纹路的视频,应当考虑将量化值降低一个较大的幅度。

• 继续在其他的选项卡中设定余下的参数。

• 在恒定质量模式中,“量化压缩 (Quantizer compression)”用以控制在复杂的和高运动量的场景中的质量波动,可以参考下面的标题“高速度,高质量”中的描述。

• 在其他的选项卡中进行其余的设定。

• 在编码类型菜单(A.)中选择“多次编码 - 第一次编码(Multipass

– First Pass)”或者“多次编码 - 第一次编码(快速)(Multipass –

First Pass (Fast))”。由于人们热衷于使用三次编码来获得最理想的质量,所以可以考虑使用“快速”的第一次编码模式。对于二次编码,我建议使用标准的第一次编 码模式。虽然在第一次编码中,使用快速模式来替代标准模式在大部分的标准中并不会造成任何大的损失,但我还是推荐在二次编码中使用标准模式,以保证对大多 数视频及编码的情况取得最佳的质量。

• 以“千比特/秒(kbps)”为单位的“目标比特率(Target

Bitrate)”(B.)是分配给视频的数据码率。这个码率越高,可视信息被压缩的就越少,从而可以获得更好的质量、更清晰的图像、更少的人为编码因素 以及更多的细节保留。可以考虑使用比特率计算器来计算决定视频所采用的比特率以达到所需的体积大小(你可以通过在Doom9的论坛狩猎来找到这些,但请不 要在那里误杀任何“sheep“)。我建议对高质量的视频使用500到900的比特率,但正如我所说的那样,这完全取决于你希望得到的文件大小。对一部电

影来说,根据视频的长度和复杂性的不同,合理的文件体积限制是500、700或1400MB(大量的细节和高度的运动是导致高复杂度的主要原因)。

• 比特率变量(Bitrate Variance):对指定的比特率所允许的波动范围(用百分比表示)。给编解码器一个围绕目标比特率的波动余地,以备在某些情况下应付额外数据的需要。 基本上需要比较接近你所选择的比特率而保持一个较低的数值,从1%到4%。

• “量化压缩(Quantizer compression)”控制在复杂的和运动量较大的场景中的质量波动。参见下面的标题“高速度,高质量”中的描述。

• 继续在其他的选项卡中设定余下的参数。

• 在进行了满意的设定和第一次编码之后,重新输入和你刚才相同的编解码器参数设定并在编码类型菜单中选择“多次编码 - 第N次编码(Multipass – Nth Pass)”,保持其他所有的选项和它们在第一次编码中相同的设定。如果你希望进行三次编码,再重复一次这个步骤。

编码:高速度,高质量

这一部分介绍达到编码质量和编码速度的最佳组合的必要 步骤。以下是在将编码速度提升到最高的情况下,制作最高质量的AVC编码的推荐设置。

• “关键帧增益(%)(Keyframe boost (%))”(A.)控制关键帧(I帧、节点帧、转场帧(I-frames, intra frames, the “scene-changer” frames))超出其他P帧而被增益的质量多少。增益会给这些关键帧一些外加的质量,因此从这些帧中预算出的帧也会具有较高的质量,即获得更好的视觉效 果。另外,关键帧经常会给一些静止的场景提供背景基础,在这些场景中,很多静止的元素会在画面上持续停留一段时间(特别是在一些慢节奏的动画中),这样, 提升这些关键帧就显得非常重要。保持这个数值在50到0之间(数值是0的话会获得一个更一致的质量,所有的帧都被同样地对待处理)以便达到一个可以被普遍 接受的一致结果。对全局来说,40是一个推荐值;然而,在个别情况下,进行少许的增减可能会得到更好的效果(在低比特率/低质量的动画编码中增加该值,在 现实题材的视频或明亮的、背景经常变化或移动的连续快速运动的视频中减少该值)。然而,在大多数的普遍情况下,只要你的片源不是太过特别——例如使用了大 量的渐变场景转换或者过于发灰或者发亮,抑或是发暗(在这种情况下你可能会想要调整它)——最好是不用过多地担心这个选项。

• “B帧缩减(%)(B-frames reduction (%))”(B.或者在比特率选项卡)控制B帧相对于其他的P帧所减少的量化值(质量)。对人类的视觉系统来说,这种在B帧的比特率上的减少很难被注意 到,因为B帧是不显著地用于其他的P帧之间来更有效地重构视频的运动。将这个值设定地低一些可以从本质上增加压缩率,但是你就可能会遭致视频的运动出现过 多的人工计算因素和不协调地细节再现效果的惩罚。对高比特率和低量化值的现实题材的视频,你可能想要将该值下降到略微低于30的推荐值,也许是25或者 20,以此来保证一个更一致的细节质量、运动效果和视频整体。对于动画的内容(卡通、动画等),你可以将这个值设定到50,对某些动画的题材甚至可以到 60,这是由动画在运动的效果和细节变换的精确性上先天的局限性所决定的。

• 量化压缩(%)(Quantizer compression(%))”(C.),也被理解为“比特率变动(Bitrate Variability)”,控制x264在你所指定的比特率所确定的量化值(质量)的范围内的波动幅度。这个选项设定得越低,量化(质量)的变化就会更 趋于飘忽和不稳定。例如说,将该值设定为0会允许x264在每一帧中剧烈地改变它的质量:缺点是一些“简单”的帧(低细节、低运动量)会在你所选择的比特 率下显示出惊人的效果,而其他“复杂”的帧(高细节、高运动量)显示效果就会相当糟糕,因为x264可能会剧烈地降低它的质量来维持所需的比特率,以获得 一个比较稳定的、恒定的比特率。然而,这个设定越高,质量就会趋于相等,从而获得一个具有更加稳定的质量的视频。例如,将该值设定为100会强迫x264 对所有的帧使用相同的质量(无波动),因此从理论上讲,它可能给某一帧分配10kbps而另一帧是1000来保持两者之间相同的质量(纯VBR);所以从 全局上看,所有的帧都会被一致地量化,按照质量波动的限制来处理同样的质量,即使比特率可能会剧烈地波动。

• 从这个角度来考虑:这个选项的功能正如其 名称所说。你将这个“比特率变动”设定得越小,从一个场景到下一个场景之间的比特率的变动就越少,但是其质量会显得更为恒定。

• 这个选项的设定和个人的偏好有关,如果你 不是特别明确地想要进行一个CBR的编码(对数据流之类,在这种情况下你可以设定为0)或者是等质量下的VBR编码(在这种情况下你可以设定为100),

我强烈建议你保持默认值60不变以获得最佳的质量。

• 当然,比特率变动的控制只是在一个比特率 可以被控制的模式中可用,例如多次编码或者“单次编码 – 比特率”模式(这里我们将不讨论这个模式),对于恒定量化的模式是不可用的,因为它在质量上已经恒定了。

• D.,E.和F.的焦点集中在所谓的量化限制上,同样是只能用在比特率可控的模式中。对于大多数的编码来说,你无 需接触到其中的任何一个。“最小QP(Min QP)”(D.)设定你的视频在任意一点所能达到的最小量化值(最高质量)。如果你不是打算要在一个低分辨率的视频上实现超高比特率的编码,我的建议值是 从10到15。类似地,设定你的视频所能达到的最高量化值(最低质量)。这个设定甚至会更加困难,所以我推荐保持原来的数值而不必更改(默认值51),让

x264去决定每个场景的量化。51的最大值看起来虽然有些过度,但是帧的相对复杂度在可控比特率的量化过程中已经被纳入了考虑范围,而x264知道在这 种条件下采取最好的处理方式。“最大QP间距(Max QP Step)”控制x264在两个量化(质量)等级之间的变换速率。将这个值设定地过低会强迫编解码器缓慢地变换质量等级,对那些可能突然地需要一个较低的 量化值以维持相似的视觉效果的特定场景可能会造成一个毁灭性地打击,而将这个值设定得过高可能会导致质量上的显著跳变。 • “场景切换阈值(Scene Cut Threshold)”(G.)在x264决定一次场景转换之前,确定一帧所需要变化的程度(因此也会引入一个关键帧)。40是默认的推荐值,但是在每个 视频或每次编码时稍作改变会对精确检测场景变换大有裨益。对于昏暗、夜晚、洞穴、水下等等视频,你可以减少这个值以使x264更精确地确定场景的变换。更 一般的原则是,具有更精细的场景变换的视频需要一个更高的场景切换阈值(例如45到50),而对那些明亮的、高对比度且具有显著的场景变换的视频,事实上 则有理由尝试设定一个较低的阈值(例如35)。同样,需要认识到更短的关键帧间距最好工作在较低等级的关键帧增益下。