Uso de coletores de arquivos

[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador de Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador de Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Em circunstâncias normais, você pode simplesmente passar ao gravador um nome de arquivo de saída usando o método IWMWriter::SetOutputFilename e o objeto writer gravará o arquivo no disco automaticamente. Nesse caso, o gravador está realmente criando e controlando um objeto coletor de arquivos de gravador que manipula a gravação do arquivo no disco. Um objeto coletor de arquivo de gravador controla o fluxo de dados do objeto gravador para um único arquivo.

Você pode criar seus próprios coletores de arquivos para obter mais controle sobre como o coletor grava o arquivo. Você também pode acessar o coletor de arquivos de gravador padrão criado pelo gravador em resposta a uma chamada para SetOutputFilename.

Criando coletores de arquivos

Para criar um coletor de arquivos e adicioná-lo ao gravador, execute as etapas a seguir.

  1. Crie um coletor chamando a função WMCreateWriterFileSink .
  2. Forneça um nome de arquivo para o coletor chamando IWMWriterFileSink::Open.
  3. Adicione o coletor de arquivos ao gravador chamando IWMWriterAdvanced::AddSink.
  4. Execute a escrita da maneira usual.
  5. Depois que a gravação for concluída, o coletor fechará o arquivo automaticamente.

Parando e iniciando coletores de arquivos

Após o início das operações de gravação, você pode parar de gravar em um coletor de arquivos chamando IWMWriterFileSink2::Stop.

Há muitas razões potenciais pelas quais você gostaria de parar de escrever em um coletor. Por exemplo, se você estiver gravando de uma fonte dinâmica, poderá estar interessado apenas em parte do conteúdo.

Você pode retomar a gravação em um coletor de arquivos chamando IWMWriterFileSink2::Start. Parar e Iniciar usam os horários de apresentação para controlar aproximadamente quando o comando é executado. Você pode usar os métodos IWMWriterFileSink3 para obter mais controle sobre os tempos de início e parada.

Fechando coletores de arquivos

Normalmente, um coletor de arquivos é fechado automaticamente. Se você terminar de gravar em um coletor, mas as operações de gravação em outros coletores continuarem, você deverá fechar explicitamente o coletor para conservar recursos. Para fechar um coletor de arquivos, chame IWMWriterFileSink2::Close.

Obtendo estatísticas do coletor

Você pode obter o tamanho e a duração do arquivo para um coletor aberto chamando IWMWriterFileSink2::GetFileSize e IWMWriterFileSink2::GetFileDuration , respectivamente.

IWMWriterFileSink Interface

IWMWriterFileSink2 Interface

IWMWriterFileSink3 Interface

Objeto de coletor de arquivo do gravador

Gravando arquivos ASF