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.
- Crie um novo coletor chamando o função WMCreateWriterFileSink.
- Forneça um nome de arquivo para o coletor chamando IWMWriterFileSink::Open.
- Adicione o sumidouro de ficheiros ao gravador chamando IWMWriterAdvanced::AddSink.
- Execute a escrita da forma habitual.
- 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.
Tópicos relacionados