配置 VBR Quality-Based
[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
可以在流上使用基于质量的可变比特率 (VBR) 编码,以指定将在整个流中维护的质量级别,而不考虑由此产生的比特率要求。
对于基于质量的 VBR 视频流,必须指定 1 到 100 的质量级别,其中 100 表示最高质量。 目前只有 30 个离散质量设置。 以下质量级别相当于离散质量设置:1、4、8、 11、15、18、22、25、29、33、36、40、43、47、50、54、58、61、65、68、72、75、79、83、86、90、93、97、100。 上一个列表中的两个连续值之间的数字等同于与小数相同的质量设置。 例如,列出 1 和 4,因此 2 和 3 都会导致与 1 相同的质量设置。
对于音频流,可以枚举可用模式并检索流配置对象。 有关详细信息,请参阅 枚举编解码器格式。
使用基于质量的 VBR 视频时,必须将 WMVIDEOINFOHEADER 结构的 dwBitrate 成员设置为正值。 编写器不使用此值,但传递零或负数可能会导致写入时出错。
若要将配置文件中的流配置为使用基于质量的 VBR 进行编码,请执行以下步骤。
- 通过调用 WMCreateProfileManager 函数创建配置文件管理器对象。
- 打开要向其添加 VBR 支持的现有配置文件。 有关打开配置文件的详细信息,请参阅 使用配置文件。
- 通过调用 IWMProfile::GetStream 或 IWMProfile::GetStreamByNumber 获取要使用的流的流配置对象。
- 通过调用 IWMStreamConfig::QueryInterface 获取指向流配置对象的 IWMPropertyVault 接口的指针。
- 通过为 g_wszVBREnabled 属性调用 IWMPropertyVault::SetProperty 为 流启用 VBR 。
- 通过为 g_wszVBRQuality 属性调用 IWMPropertyVault::SetProperty 来设置 VBR 流的质量级别。
- 使用 IWMPropertyVault::SetProperty 将 g_wszVBRBitrateMax 和 g_wszVBRBufferWindowMax都设置为零。
- 通过调用 IWMProfile::ReconfigStream 保存对流所做的更改。
- 保存配置文件,或将其传递给编写器对象并开始编写。
相关主题