Запись потоков с несквадратными пикселями

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

Существует два способа создания видеопотоков с неквадратными пикселями, которые будут правильно отображаться в проигрывателе Windows Media. Первый метод включает настройку атрибутов уровня потока в заголовке файла. Второй способ включает добавление расширения блока данных в поток профиля, а затем установку значения для этого расширения в каждой записи.

Использование атрибутов заголовка уровня потока для задания пропорций пикселей

  1. Настройте объект записи. Дополнительные сведения см. в создании файлов ASF.
  2. Создайте или загрузите профиль с одним или несколькими видеопотоками. Дополнительные сведения см. в разделе Использование профилей с приложением Writer.
  3. Вызов IWMWriter::SetProfile. (Всегда вызывайте этот метод перед настройкой атрибутов заголовка.)
  4. Вызовите QueryInterface, чтобы получить интерфейс IWMHeaderInfo3 и дважды вызовите AddAttribute, чтобы добавить AspectRatioX и AspectRatioY в качестве атрибутов уровня видеопотока. Эти атрибуты являются значениями DWORD.
  5. Напишите файл.

Использование расширений единиц данных для задания пропорций пикселей

перед написанием:

  1. Настройте объект записи. Дополнительные сведения см. в написании файлов ASF.
  2. Создайте или загрузите профиль с одним или несколькими видеопотоками. Дополнительные сведения см. в разделе о том, как использовать профили с писателем.
  3. Для каждого потока (любого типа носителя) в профиле вызовите IWMStreamConfig::SetStreamName, чтобы указать уникальное имя. Не давайте двум потокам одинаковое имя.
  4. Используйте IWMStreamConfig2::AddDataUnitExtension в видеопотоке, чтобы добавить расширение единицы данных для пропорций пикселей.
  5. Вызов IWMWriter::SetProfile.
  6. Напишите файл.

при написании:

  • Для каждого примера вызовите INSSBuffer3::SetProperty и укажите свойство WM_SampleExtensionGUID_PixelAspectRatio вместе с правильным значением. Значения соотношения сторон записываются как два объединённых двухзначных значения. Например, 16:9 записывается как 1609 или 0x0649. Это всегда 2-байтовое значение.

Для чтения и записи видеопотоков с несократными пикселями