Написание примеров видеоимоим

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

Поток видеоимоданных — это видео, содержащее ряд неподвижных изображений. Изображения могут перемещаться в пределах кадра, и каждое изображение может смешиваться с следующим. Потоки видеоимок кодируются с помощью кодека Windows Media Video 9 Image версии 2. Выходное видео похоже на видео, созданное кодеком Windows Media Video 9.

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

Задав профиль для объекта записи, вызовите IWMWriter::GetInputProps , чтобы получить свойства мультимедиа для входного потока видеоимок. Получите тип мультимедиа из объекта свойств мультимедиа, вызвав IWMMediaProps::GetMediaType, и измените подтип на WMMEDIASUBTYPE_VIDEOIMAGE. Для ширины и высоты видео следует задать максимальные размеры, необходимые для охвата изображений, которые будут добавлены в поток. Затем вызовите IWMMediaProps::SetMediaType с измененным типом входных данных. Теперь все готово к отправке примеров в объект модуля записи.

Каждый пример должен начинаться с WMT_VIDEOIMAGE_SAMPLE2 структуры. Кроме того, примеры могут содержать растровые изображения. Изображение присоединяется только к образцу для первого кадра, в котором оно отображается. Для всех дополнительных кадров, использующих это изображение, требуется только информация в структуре. Входные растровые изображения должны быть отформатированы как RGB, 24 бита на пиксель.

Файлы растровых рисунков хранят данные изображения, чтобы данные для каждой строки изображения принимают количество байтов, делимых на четыре. (Это называется шагом растрового изображения.) Это принудительно приводит начало каждой строки видео к границе DWORD , что повышает эффективность копирования. Если строки изображения не равномерно разделены на четыре, строка заполняется следующим наибольшим числом, кратным четырем байтам. При присоединении данных изображения необходимо удалить все заполнение, существующее в конце данных для каждой строки.

Кодек Образа Windows Media Video 9 версии 2 поддерживает до двух изображений в памяти одновременно. Эти образы называются предыдущими и текущими изображениями. Каждое изображение имеет набор элементов в структуре WMT_VIDEOIMAGE_SAMPLE2 , которые определяют, как изображение представлено в кадре. Вы можете добавить изображение, задав элементу dwControlFlags WMT_VIDEOIMAGE_SAMPLE2 значение WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME. При передаче входного кадра кодеку это изображение становится текущим. Образ, который был текущим изображением в предыдущем примере, обычно становится предыдущим, а образ, который был предыдущим изображением в предыдущем примере, удаляется. Вы можете настроить кодек для сохранения старого предыдущего образа, задав для члена bKeepPrevImage значение TRUE. В этом случае образ, который был текущим изображением в предыдущем примере, удаляется.

Базовая композиция кадра видеоимения определяется двумя факторами для каждого изображения: интересующей областью и коэффициентом смешения. Интересующая область изображения определяется исходной точкой, шириной и высотой. Часть изображения, описанная интересующей областью, заполняет выходной кадр. Если интересующая область отличается от размера выходного кадра, кодек изменяет ее размер. Коэффициент смешения изображения определяет смешение двух изображений. Коэффициенты смешения для текущего и предыдущего изображений должны составлять 1,0. Например, если fCurrBlendCoef имеет значение 0,5, а fPrevBlendCoef — 0,5, то выходной кадр состоит из равного сочетания областей, представляющих интерес для обоих изображений.

Управляя интересующей областью изображения, можно создавать эффекты сдвига и масштабирования. Коэффициенты смешения позволяют перекрестно исчезать (растворяться) между изображениями. В дополнение к этим эффектам можно использовать один из предопределенных переходов для создания более сложных кадров. Доступные переходы описаны в разделе Переходы видеоимуляции этой документации. При использовании перехода необходимо настроить каждый кадр. Самый простой способ сделать это — создать функцию, которая постепенно изменяет элементы структуры WMT_VIDEOIMAGE_SAMPLE2 для получения полного эффекта.

Дополнительные сведения о значениях, устанавливаемые для деформаций, см. в разделе WMT_VIDEOIMAGE_SAMPLE2.

Примечание Если вы хотите включить звук в файл с потоком видеоимофона, необходимо использовать несжатый аудиовход. Чтобы объединить поток видеоиможков с существующим сжатым аудиопотоком, необходимо распаковать звук и передать примеры в несжатом виде. Если вы передаете сжатые примеры в модуль записи при записи потока видеоимоданных, возникнет ошибка, в результате которой примеры будут удалены из видео.

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

Видеоизображение

Запись ASF-файлов