Настройка Quality-Based VBR

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие 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 на основе качества необходимо задать положительное значение для элемента dwBitrate структуры WMVIDEOINFOHEADER . Это значение не используется модулем записи, но передача нуля или отрицательного числа может привести к ошибкам при записи.

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

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

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