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


Использование объектов активации кодировщика

Для преобразования файлов мультимедиа в формат ASF можно использовать кодировщики Windows Media. Чтобы использовать эти кодировщики, они должны быть зарегистрированы в системе.

Сведения о регистрации кодировщика см. в разделе Создание экземпляра кодировщика MFT.

Использование объектов активации кодировщика

В качестве альтернативы использованию интерфейса IMFTransform кодировщика (описано в разделе Создание кодировщика с помощью CoCreateInstance) можно создать экземпляр объекта активации для кодировщика. Объекты активации упрощают создание кодировщика, а Media Foundation предоставляет следующие две функции для этого подхода:

Обе эти функции требуют создания целевого типа носителя и задания свойств кодирования перед вызовом этих функций. Если приложение использует компоненты ASF уровня конвейера для кодирования файла в формате ASF и уже создало и настроит приемники мультимедиа ASF, этот набор данных можно получить из приемника мультимедиа ASF.

MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate устанавливают тип выходных данных кодировщика на тип мультимедиа, заданный приложением.

Примечание Если вы используете MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate , вы можете активировать кодировщик, вызвав IMFActivate::ActivateObject , но вы не можете изменить типы входных и выходных носителей кодировщика, а также изменить какие-либо свойства кодирования.

Дополнительные сведения о создании объектов Media Foundation с помощью объектов активации см. в разделе Объекты активации.

Получение целевого типа мультимедиа из приемника мультимедиа ASF

  1. Получите указатель на указатель IMFASFContentInfo приемника мультимедиа ASF, вызвав IMFMediaSink::QueryInterface в приемнике мультимедиа ASF и передав IID_IMFASFContentInfo в качестве идентификатора интерфейса.
  2. Получение объекта профиля ASF, связанного с объектом ContentInfo.
  3. Перечислите потоки в профиле, чтобы получить тип мультимедиа потока.

Получение свойств кодирования из приемника мультимедиа ASF

  1. Если вы настроили свойства кодирования в приемнике мультимедиа (описано в разделе Настройка свойств в приемнике файлов), можно создать ссылку на хранилище свойств приемника, вызвав IMFMediaSink::QueryInterface в приемнике мультимедиа ASF и передав IID_IPropertyStore в качестве идентификатора интерфейса.

  2. Если у вас есть указатель на объект ContentInfo приемника, можно вызвать IMFASFContentInfo::GetEncodingConfigurationPropertyStore , чтобы получить ссылку на хранилище свойств приемника мультимедиа.

    Убедитесь, что все свойства кодирования, заданные в приемнике мультимедиа ASF, отражаются в хранилище свойств, переданном в MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate. Кодировщик настраивается автоматически на основе параметров, заданных приложением.

При создании узла преобразования в топологии кодирования можно задать тип объекта в качестве указателя IMFActivate , полученного в этих двух вызовах. При разрешении топологии сеанс мультимедиа использует объект активации для создания экземпляра кодировщика MFT.

Перечисление кодировщика в Windows 7 и более поздних версиях

Для приложений, работающих в Windows 7, помимо MFTEnum , можно перечислить MFT кодировщика, вызвав MFTEnumEx. Эта функция возвращает указатель на объект активации кодировщика MFT. Структура функции очень похожа на описанную выше MFTEnum , за исключением того, что MFTEnumExвозвращает массив указателей IMFActivate для MFT кодировщика, которые соответствуют критериям поиска.

Создание экземпляра кодировщика MFT

Кодировщики Windows Media

Объекты активации