Compartilhar via


Criando o coletor de arquivos ASF

O coletor de arquivos ASF é uma implementação do IMFMediaSink fornecida pelo Media Foundation que um aplicativo pode usar para arquivar dados de mídia ASF em um arquivo. Para obter informações sobre o modelo de objeto e o uso geral dos Coletores de Mídia do ASF, consulte Coletores de Mídia ASF.

Há duas maneiras de criar uma instância do coletor de arquivos ASF. Você pode chamar MFCreateASFMediaSink ou MFCreateASFMediaSinkActivate.

Se você chamar MFCreateASFMediaSink, deverá especificar um fluxo de bytes para o arquivo de saída, no qual o coletor gravará o conteúdo do ASF durante uma sessão de codificação. O fluxo de bytes especificado deve ter recursos que podem ser buscados e graváveis, caso contrário, a chamada MFCreateASFMediaSink falhará com o código de erro E_FAIL. Essa chamada cria um objeto de coletor de arquivos em processo e retorna um ponteiro para a interface IMFMediaSink do coletor de arquivos.

Se você chamar MFCreateASFMediaSinkActivate, deverá especificar a URL do arquivo de saída no qual o coletor de arquivos gravará dados de mídia. Nesse caso, o coletor de arquivos cria internamente o fluxo de bytes. A função retorna um ponteiro para a interface IMFActivate do coletor de arquivos. Para

Considere MFCreateASFMediaSinkActivate em vez de MFCreateASFMediaSink, quando a topologia de codificação for projetada da seguinte maneira:

  • A topologia de codificação é para o PMP (caminho de mídia protegido) e o coletor de arquivos é usado fora do processo.

  • O nó de saída da topologia é criado usando o ponteiro retornado para o objeto de ativação do coletor de arquivos e seu aplicativo está acompanhando os fluxos no coletor de arquivos por números de fluxo.

    Observação

    Você pode ativar o coletor de arquivos chamando IMFActivate::ActivateObject. No entanto, você não precisa ativar o objeto explictly. A Sessão de Mídia controla o objeto de ativação e ativa o coletor de arquivos automaticamente durante a sessão de codificação.

     

  • As informações de fluxo são configuradas no objeto ContentInfo. Desucssado na próxima subseção.

Depois de criar o coletor de arquivos ASF, ele deve ser configurado antes de criar a topologia. O coletor de arquivos precisa saber as informações a seguir para gerar o arquivo de saída.

  • Informações básicas do fluxo
  • Informações do modo de codificação
  • Metadados

O coletor de arquivos implementa o Objeto ContentInfo do ASF e expõe a interface IMFASFContentInfo para que um aplicativo possa usá-lo para definir informações relacionadas aos fluxos e à codificação. Dependendo da função que você chamou para criar o coletor de arquivos, há duas maneiras de obter uma referência à interface IMFASFContentInfo .

  • Se você chamar a função MFCreateASFMediaSink , o aplicativo deverá consultar a interface IMFASFContentInfo chamando IMFMediaSink::QueryInterface no coletor de arquivos retornado.
  • Se você optar por chamar MFCreateASFMediaSinkActivate, essa função espera que você tenha um objeto ContentInfo totalmente configurado antes da chamada. Para fazer isso, você precisa criar um objeto ContentInfo vazio chamando MFCreateASFContentInfo e configurá-lo com todas as informações necessárias. Passe o objeto ContentInfo configurado para o MFCreateASFMediaSinkActivate para receber um ponteiro para o objeto de ativação do coletor. Não é possível ativar o coletor de arquivos usando o objeto de ativação retornado e, em seguida, alterar qualquer informação de fluxo ou codificação.

Para obter informações sobre como configurar fluxos de coletor e propriedades específicas, consulte os seguintes tópicos:

Coletores de mídia ASF

Componentes asf da camada de pipeline

Suporte do ASF no Media Foundation