Usando o gravador do coletor
Visão geral
Tipos de contêiner de arquivo
O gravador de coletor tem suporte interno para vários tipos de contêiner de arquivo. Para obter uma lista completa, consulte MF_TRANSCODE_CONTAINERTYPE. Você pode dar suporte a tipos de contêiner adicionais escrevendo um coletor de mídia personalizado. O contêiner de arquivos é especificado quando você cria uma nova instância do gravador do coletor.
Formatos de fluxo
Para cada fluxo, o aplicativo deve especificar o seguinte.
- O formato de entrada é o formato que o aplicativo envia para o gravador do coletor.
- O formato de saída é o formato que será gravado no arquivo.
Os formatos de entrada e saída podem ser compactados ou descompactados. O gravador de coletor dá suporte às seguintes combinações:
- Entrada descompactada com saída compactada. Esse é o caso típico e é usado para cenários de codificação ou transcodificação. Um codificador do Microsoft Media Foundation deve estar disponível que aceite o tipo de entrada e codifica para o tipo de saída.
- Entrada compactada com saída idêntica. Use essa combinação para remuxar um arquivo sem transcodificação.
- Entrada descompactada com saída idêntica. Use essa combinação para gravar áudio ou vídeo descompactado em um contêiner de arquivos.
O gravador do coletor não dá suporte ao redimensionamento de vídeo, à conversão de taxa de quadros ou à resampling de áudio, a menos que essas funções sejam fornecidas pelo codificador. Caso contrário, o aplicativo pode usar processadores de sinal digital para converter os dados de entrada, antes de enviar os dados para o
Criando o gravador do coletor
Há duas funções que criam o gravador do coletor:
- MFCreateSinkWriterFromURL usa a URL de um arquivo de saída ou um ponteiro para um fluxo de bytes. Essa função cria o coletor de mídia internamente.
- MFCreateSinkWriterFromMediaSink usa um ponteiro para um coletor de mídia que já foi criado pelo aplicativo.
Se você estiver usando um dos coletores de mídia internos, a função MFCreateSinkWriterFromURL é preferível, pois o chamador não precisa configurar o coletor de mídia.
O método MFCreateSinkWriterFromURL fornece várias opções para especificar o tipo de contêiner de arquivo. No caso mais simples, a função usa a extensão de nome de arquivo na URL para selecionar o contêiner de arquivos. Para obter detalhes, consulte a página de referência da função.
Por exemplo, o código a seguir especifica o nome do arquivo "output.wmv" para a URL. Com base na extensão de nome de arquivo, o gravador do coletor carregará o Coletor de Mídia ASF para criar um arquivo ASF (Advanced Systems Format).
HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);
No caso de MFCreateSinkWriterFromMediaSink, o tipo de arquivo é determinado pelo coletor de mídia.
Tópicos relacionados