Para entregar amostras compactadas com o leitor assíncrono
[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.]
O leitor assíncrono pode fornecer amostras compactadas de fluxos em arquivos ASF. Os aplicativos geralmente fornecem exemplos compactados ao copiar um fluxo de um arquivo para outro. Não é aconselhável recompactar dados que foram reconstruídos de um fluxo compactado, pois os dados são perdidos no processo de codificação. A mídia digital que foi compactada mais de uma vez terá uma diminuição notável na qualidade.
O SDK de Formato de Mídia do Windows não fornece nenhum método para decodificar dados depois que eles são extraídos de um arquivo ASF. Se você receber amostras compactadas e mais tarde quiser descompactá-las, precisará fornecer seu próprio código para fazer isso. Uma maneira de contornar essa limitação é gravar os exemplos compactados em um novo arquivo ASF e lê-los novamente em exemplos normais e não compactados.
Para receber amostras compactadas com o leitor assíncrono, execute as etapas a seguir.
- Implemente o retorno de chamada IWMReaderCallbackAdvanced::OnStreamSample . Esse retorno de chamada é basicamente idêntico na função para IWMReaderCallback::OnSample , exceto pelo fato de que ele fornece amostras por número de fluxo e os exemplos ainda são compactados.
- Antes de iniciar a reprodução, obtenha um ponteiro para a interface IWMReaderAdvanced do objeto leitor chamando IWMReader::QueryInterface.
- Configure o leitor para fornecer amostras compactadas para o fluxo desejado chamando IWMReaderAdvanced::SetReceiveStreamSamples.
- Repita a etapa 3 para cada fluxo para o qual a entrega de exemplo compactada é desejada.
Observação
Os fluxos de imagem não são válidos para entrega de fluxo compactado. Se você copiar um fluxo de imagem de um arquivo para outro, ele não funcionará no novo arquivo. Para copiar um fluxo de imagens de arquivo para arquivo, recupere os exemplos de fluxo de imagem por número de saída e inclua-os no novo arquivo como se estivesse incluindo um novo fluxo de imagem.
Tópicos relacionados