(Microsoft Media Foundation) 使用 VBR 编码
如 编码方法 主题中所述,可变比特率 (VBR) 编码用于提高内容质量的一致性。 配置 VBR 流的方式与将固定比特率编码 (CBR) 流的方式相同,但缓冲区参数 (比特率和缓冲区窗口) 除外。 本部分介绍如何配置 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。
相关主题