Поделиться через


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

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

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

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

  1. Настройте объект записи. Дополнительные сведения см. в статье Запись ФАЙЛОВ ASF.
  2. Создайте или загрузите профиль с одним или несколькими видеопотоками. Дополнительные сведения см. в разделе Использование профилей с модулем записи.
  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-байтовое значение.

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