Partilhar via


Usando coletores de arquivos

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. O Source Reader e o Sink Writer foram otimizados para o Windows 10 e o Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer em vez de SDK do Windows Media Format 11, sempre que 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étodoIWMWriter::SetOutputFilename, e o objeto writer gravará o arquivo no disco automaticamente. Nesse caso, o escritor está realmente criando e controlando um objeto sink do escritor de ficheiro que é responsável por gravar o ficheiro no disco. Um objeto coletor de arquivo do gravador controla o fluxo de dados do objeto do 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 aceder ao destino de ficheiro padrão do gravador criado pelo gravador em resposta a uma chamada para SetOutputFilename.

Criando destinos de arquivos

Para criar um destino de ficheiros e adicioná-lo ao gravador, execute os seguintes passos.

  1. Crie um novo coletor chamando o função WMCreateWriterFileSink.
  2. Forneça um nome de arquivo para o coletor chamando IWMWriterFileSink::Open.
  3. Adicione o sumidouro de ficheiros ao gravador chamando IWMWriterAdvanced::AddSink.
  4. Execute a escrita da forma habitual.
  5. Quando a gravação estiver concluída, o sistema fechará o arquivo automaticamente.

Parando e iniciando coletores de arquivos

Depois que as operações de gravação começarem, 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 para uma pia. Por exemplo, se estiver a gravar a partir de uma fonte ao vivo, poderá estar interessado apenas em parte do conteúdo.

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

Fechar Dissipadores de Arquivos

Normalmente, um destino de ficheiros é fechado automaticamente. Se tiveres terminado de escrever para um coletor, mas as operações de escrita para outros coletores continuarem, deverás fechar explicitamente o coletor para conservar recursos. Para fechar um coletor de arquivos, chame IWMWriterFileSink2::Close.

Obter estatísticas do lavatório

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

Interface IWMWriterFileSink

Interface IWMWriterFileSink2

Interface IWMWriterFileSink3

Writer File Sink Object

Escrevendo arquivos ASF