使用 VBR 编码 (Microsoft Media Foundation)

编码方法 主题中所述,使用可变比特率 (VBR) 编码来提高内容质量的一致性。 以编码常量比特率 (CBR) 流的方式配置 VBR 流,但缓冲区参数 (比特率和缓冲区窗口) 除外。 本部分介绍如何配置 VBR 流。

配置基于质量的 VBR

使用基于质量的 VBR 方法进行编码不需要任何预定义的缓冲区参数。 相反,请指定一个质量级别, (从 0 到 100) 编码器动态确定适当的缓冲区参数。 此编码模式仅使用一个编码传递。

可以枚举音频编解码器支持的基于质量的 VBR 输出类型。 设置输出类型时,必须使用DMO返回的类型之一。 有关详细信息,请参阅 枚举特定编码模式的音频类型

若要配置基于质量的 VBR 视频流,必须设置下表中列出的属性。

属性 说明
MFPKEY_VBRENABLED 设置为VARIANT_TRUE。
MFPKEY_VBRQUALITY 设置为所需的质量值,从 0 到 100。 并非所有质量值都表示离散设置。 有关详细信息,请参阅属性说明。

 

配置不受约束的 VBR

不受约束的 VBR 编码使编码器能够改变单个样本的大小,而无需任何显式缓冲区限制。 但是,在生成的内容的持续时间内的平均比特率必须小于或等于指定的值。 不受约束的 VBR 需要两个编码传递。

可以枚举音频编解码器支持的双传递 VBR 输出类型。 设置输出类型时,必须使用DMO返回的类型之一。 有关详细信息,请参阅 枚举特定编码模式的音频类型

若要配置不受约束的 VBR 视频流,必须设置下表中列出的属性。

属性 说明
MFPKEY_VBRENABLED 设置为VARIANT_TRUE。
MFPKEY_PASSESUSED 设置为 2。
MFPKEY_RAVG 设置为所需的平均比特率。

 

配置 Peak-Constrained VBR

峰值约束的 VBR 类似于不受约束的 VBR,因为它限制在流持续时间内的平均比特率。 此外,受峰值约束的 VBR 符合峰值缓冲区。 此缓冲区使用峰值比特率和峰值缓冲区窗口进行描述,就像 CBR 缓冲区由平均比特率和缓冲区窗口描述一样。 此模式使编码器在遵守峰值限制的同时如何编码各个样本具有灵活性。 当解码由设备中的芯片(如 DVD 播放器)执行时,此功能特别有用,其中必须考虑硬件限制。

支持的峰值约束 VBR 音频编码器输出类型是针对不受约束的 VBR 枚举的相同类型。 设置DMO的峰值值,并使用传递的类型。 有关详细信息,请参阅 枚举特定编码模式的音频类型

若要配置受峰值约束的 VBR 视频流,必须使用 IPropertyBag::Write 方法设置下表中列出的属性。

属性 说明
MFPKEY_VBRENABLED 设置为VARIANT_TRUE。
MFPKEY_PASSESUSED 设置为 2。
MFPKEY_RAVG 设置为所需的平均比特率。
MFPKEY_RMAX 设置为所需的峰值比特率。
MFPKEY_BMAX 设置为对应于峰值比特率的缓冲区窗口。

 

注意

建议将峰值比特率设置为平均比特率的至少两倍。 将峰值速率设置为较低的值可能会导致编解码器将内容编码为双向 CBR,而不是峰值约束的 VBR。

 

Windows Media 编解码器

使用Two-Pass编码

使用音频

使用视频