配置不受约束的 VBR

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

可以在流上使用不受约束的可变比特率 (VBR) 编码,以指定将在编码内容中维护的平均比特率。 不受约束的 VBR 与正常 CBR 的不同之处在于,整个流的比特率差异可能更大。

流的比特率(使用 IWMStreamConfig::SetBitrate 设置)用作所需的平均比特率。 流编码完成后,可以使用 IWMPropertyVault::GetPropertyByName 检索两个附加属性: g_wszVBRPeakg_wszBufferAverage。 这些属性分别描述编码内容的峰值比特率和内容的平均缓冲区窗口。

无约束 VBR 必须与双传递编码结合使用。 配置文件中未设置双重编码。 必须将编写器配置为在写入流之前执行预处理传递。 有关使用双传递编码的详细信息,请参阅 Using Two-Pass Encoding

若要将配置文件中的流配置为使用不受约束的 VBR 进行编码,请执行以下步骤:

  1. 通过调用 WMCreateProfileManager 函数创建配置文件管理器对象。
  2. 打开要向其添加 VBR 支持的现有配置文件。 有关打开配置文件的详细信息,请参阅 使用配置文件
  3. 通过调用 IWMProfile::GetStream 或 IWMProfile::GetStreamByNumber 获取要使用的流的流配置对象。
  4. 通过调用 IWMStreamConfig::QueryInterface 获取指向流配置对象的 IWMPropertyVault 接口的指针。
  5. 通过为 g_wszVBREnabled 属性调用 IWMPropertyVault::SetProperty流启用 VBR 编码。
  6. 使用 IWMPropertyVault::SetPropertyg_wszVBRBitrateMaxg_wszVBRBufferWindowMax都设置为零。
  7. 通过调用 IWMProfile::ReconfigStream 保存对流所做的更改。
  8. 保存配置文件,或将其传递给编写器对象。
  9. 将编写器配置为执行预处理传递。

配置 VBR 流