Использование объектов активации кодировщика
Для преобразования файлов мультимедиа в формат ASF можно использовать кодировщики Windows Media. Чтобы использовать эти кодировщики, их необходимо зарегистрировать в системе.
Для получения информации о регистрации кодировщика, см. раздел Инициализация экземпляра MFT кодировщика.
- Использование объектов активации кодировщика
- перечисление кодеков на Windows 7 и более поздних версиях
- Связанные темы
Использование объектов активации кодировщика
В качестве альтернативы использованию интерфейса IMFTransform в кодировщике (описано в разделе Создание кодировщика с помощью CoCreateInstance), можно создать экземпляр объекта активации для кодировщика. Объекты активации упрощают создание кодировщика и Media Foundation предоставляют следующие две функции для этого подхода:
- MFCreateWMAEncoderActivate для создания экземпляра звукового кодировщика Windows Media.
- MFCreateWMVEncoderActivate для создания экземпляра видеокодировщика Windows Media.
Обе эти функции требуют создания целевого типа носителя и задания свойств кодирования перед вызовом этих функций. Если ваше приложение использует компоненты уровня конвейера ASF для кодирования файла в формате ASF и вы уже создали и настроили приемник мультимедиа ASF, вы можете получить этот набор сведений из приемника мультимедиа ASF.
MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate задайте тип вывода кодировщика типу носителя, указанному приложением.
Примечание Если вы используете MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate можно активировать кодировщик, вызвав IMFActivate::ActivateObject, но вы не можете изменить входные и выходные типы носителей кодировщика, а также изменить какие-либо свойства кодирования.
Дополнительные сведения о создании объектов Media Foundation с помощью объектов активации см. в разделе Объекты активации.
Получение целевого типа мультимедиа из приемника мультимедиа ASF
- Получите указатель на указатель IMFASFContentInfo приемника мультимедиа ASF, вызвав метод IMFMediaSink::QueryInterface в приемнике мультимедиа ASF и передав IID_IMFASFContentInfo как идентификатор интерфейса.
- Получите объект профиля ASF, связанный с объектом ContentInfo.
- Перечислите потоки в профиле, чтобы получить тип мультимедиа потока.
Получение свойств кодирования из приемника мультимедиа ASF
Если вы настроили свойства кодировки в приемнике мультимедиа (описано в разделе Настройка свойств в приемнике файлов), вы можете ссылаться на хранилище свойств приемника, вызвав IMFMediaSink::QueryInterface в приемнике мультимедиа ASF и передав IID_IPropertyStore в качестве идентификатора интерфейса.
Если у вас есть указатель на объект ContentInfo приемника, можно вызвать IMFASFContentInfo::GetEncodingConfigurationPropertyStore, чтобы получить ссылку на хранилище свойств мультимедийного приемника.
Убедитесь, что все свойства кодирования, заданные в приемнике мультимедиа ASF, отражаются в хранилище свойств, переданном в MFCreateWMAEncoderActivate и MFCreateWMVEncoderActivate. Кодировщик настраивается автоматически на основе параметров, указанных приложением.
При создании узла преобразования в топологии кодирования можно задать тип объекта как IMFActivate с указателем, полученным в этих двух вызовах. При разрешении топологии медиа-сеанс использует объект активации для создания экземпляра кодировщика MFT.
Перечисление энкодеров в Windows 7 и более поздних версиях
Для приложений, работающих на Windows 7, помимо MFTEnum можно перечислить кодировщики MFT, вызвав MFTEnumEx. Эта функция возвращает указатель на объект активации MFT кодировщика. Структура функции очень похожа на описанную выше MFTEnum, за исключением того, что MFTEnumExвозвращает массив указателей IMFActivate для кодировщиков MFT, которые соответствуют критериям поиска.
Связанные разделы