Compartilhar via


Usando objetos de ativação de um codificador

Para converter arquivos de mídia em formato ASF, você pode usar codificadores de mídia Windows. Para usar esses codificadores, eles devem ser registrados no sistema.

Para obter informações sobre o registro do codificador, consulte Instanciando um MFT do codificador.

Usando objetos de ativação de um codificador

Como alternativa ao uso da interface IMFTransform de um codificador (descrita na criação de um codificador usando CoCreateInstance), você pode criar uma instância do objeto de ativação para o codificador. Os objetos de ativação facilitam a criação do codificador e o Media Foundation fornece as duas funções a seguir para essa abordagem:

Ambas as funções exigem que você crie o tipo de mídia de destino e defina as propriedades de codificação antes de chamar essas funções. Se o aplicativo estiver usando componentes ASF da Camada de Pipeline para codificar um arquivo para o formato ASF e já tiver criado e configurado os Coletores de Mídia ASF, você poderá obter esse conjunto de informações do coletor de mídia ASF.

MFCreateWMAEncoderActivate e MFCreateWMVEncoderActivate definem o tipo de saída do codificador para o tipo de mídia especificado pelo aplicativo.

Nota Se você estiver usando MFCreateWMAEncoderActivate e MFCreateWMVEncoderActivate, poderá ativar o codificador chamando IMFActivate::ActivateObject , mas não é possível alterar a entrada e os tipos de mídia de saída do codificador nem alterar qualquer uma das propriedades de codificação.

Para obter mais informações sobre como criar objetos do Media Foundation usando objetos de ativação, consulte Objetos de Ativação.

Para obter o tipo de mídia de destino do coletor de mídia ASF

  1. Obtenha um ponteiro para o ponteiro IMFASFContentInfo do coletor de mídia ASF chamando IMFMediaSink::QueryInterface no coletor de mídia ASF e passando IID_IMFASFContentInfo como o identificador de interface.
  2. Obtenha o objeto de perfil ASF associado ao objeto ContentInfo.
  3. Enumerar os fluxos no perfil para obter o tipo de mídia do fluxo.

Para obter as propriedades de codificação do coletor de mídia ASF

  1. Se você tiver configurado as Propriedades de Codificação no coletor de mídia (descrito em Propriedades de Configuração no Coletor de Arquivos), poderá fazer referência ao repositório de propriedades do coletor chamando IMFMediaSink::QueryInterface no coletor de mídia ASF e passando IID_IPropertyStore como o identificador de interface.

  2. Se você tiver um ponteiro para o objeto ContentInfo do coletor, poderá chamar IMFASFContentInfo::GetEncodingConfigurationPropertyStore para obter uma referência ao repositório de propriedades do coletor de mídia.

    Verifique se todas as propriedades de codificação definidas no coletor de mídia ASF são refletidas no repositório de propriedades passado para MFCreateWMAEncoderActivate e MFCreateWMVEncoderActivate. O codificador é configurado automaticamente com base nas configurações especificadas pelo aplicativo.

Ao criar o nó de transformação na topologia de codificação, você pode definir o tipo de objeto como um ponteiro IMFActivate recebido nessas duas chamadas. Quando a topologia é resolvida, a Sessão de Mídia usa o objeto de ativação para criar uma instância do codificador MFT.

Enumeração do codificador no Windows 7 e posterior

Para aplicativos em execução no Windows 7, além do MFTEnum, você pode enumerar os MFTs do codificador chamando MFTEnumEx. Essa função retorna um ponteiro para o objeto de ativação do codificador MFT. A estrutura da função é muito semelhante ao MFTEnum descrito acima, exceto MFTEnumExreturns, uma matriz de ponteiros IMFActivate para os MFTs do codificador que correspondem aos critérios de pesquisa.

Instanciando um MFT do Codificador

codificadores de mídia Windows

Objetos de ativação