Настройка неограниченного VBR

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Вы можете использовать неограниченное кодирование переменной скорости (VBR) в потоке, чтобы указать среднюю скорость, которая будет поддерживаться в закодированном содержимом. Без ограничений VBR отличается от обычного CBR тем, что дисперсия скорости в потоке может быть больше.

В качестве требуемой средней скорости используется скорость потока, заданная с помощью IWMStreamConfig::SetBitrate. После завершения кодирования потока можно использовать IWMPropertyVault::GetPropertyByName для получения двух дополнительных свойств: g_wszVBRPeak и g_wszBufferAverage. Эти свойства описывают пиковую скорость закодированного содержимого и среднее окно буфера содержимого соответственно.

Без ограничений VBR необходимо использовать в сочетании с двухпрохожной кодировкой. Двухпродача кодировка не задана в профиле. Перед записью потока необходимо настроить модуль записи для выполнения прохода предварительной обработки. Дополнительные сведения об использовании двухпрохавной кодировки см. в разделе Использование кодировки Two-Pass.

Чтобы настроить поток в профиле для кодирования с помощью неограниченного VBR, выполните следующие действия.

  1. Создайте объект диспетчера профилей, вызвав функцию WMCreateProfileManager .
  2. Откройте существующий профиль, в который требуется добавить поддержку VBR. Дополнительные сведения об открытии профилей см. в статье Работа с профилями.
  3. Получите объект конфигурации потока для потока, который вы хотите использовать, вызвав IWMProfile::GetStream или IWMProfile::GetStreamByNumber.
  4. Получите указатель на интерфейс IWMPropertyVault объекта конфигурации потока, вызвав IWMStreamConfig::QueryInterface.
  5. Включите кодировку VBR для потока, вызвав IWMPropertyVault::SetProperty для свойства g_wszVBREnabled .
  6. Присвойте g_wszVBRBitrateMax и g_wszVBRBufferWindowMax равным нулю с помощью IWMPropertyVault::SetProperty.
  7. Сохраните изменения, внесенные в поток, вызвав IWMProfile::ReconfigStream.
  8. Сохраните профиль или передайте его в объект записи.
  9. Настройте модуль записи для выполнения прохода предварительной обработки.

Настройка потоков VBR