Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[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 Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize do Leitor de Origem e do Gravador de Separadores 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.]
Ler a partir de uma rede não é fundamentalmente diferente de ler um ficheiro local. O aplicativo passa a URL para o método IWMReader::Open do objeto leitor e o objeto leitor lida com os detalhes dos protocolos de rede. O objeto leitor usa o gerenciamento inteligente de buffer para fornecer a reprodução mais suave possível. Se a aplicação precisar de mais controlo sobre as configurações de rede do objeto leitor, estas estarão disponíveis através das interfaces IWMReaderNetworkConfig e IWMReaderNetworkConfig2.
O conteúdo de uma fonte de rede se enquadra em uma das duas categorias a seguir:
- Streaming. Os dados são transmitidos a tempo de serem reproduzidos na máquina local. Os servidores que executam o Windows Media Services podem fornecer dados de streaming. Se o conteúdo de taxa de bits múltipla (MBR) for transmitido, o cliente poderá solicitar uma taxa de bits diferente do servidor à medida que o streaming progride.
- Transferido. Todos os dados são transmitidos o mais rápido possível para que possam ser salvos como um arquivo na máquina local. Os servidores Web fornecem dados baixados. Não há comunicação do cliente para o servidor após o início do download.
Quando o objeto leitor baixa um arquivo de um servidor Web, ele usa uma técnica chamada streaming progressivo, que permite que um player comece a renderizar o conteúdo antes que o download seja concluído. Os dados são armazenados em buffer para fornecer um fluxo ininterrupto de dados para o jogador. Informações como a taxa de transferência e a duração do conteúdo são usadas para determinar por quanto tempo os dados devem ser armazenados em buffer antes de fornecê-los ao jogador.
Para abrir um arquivo ou fluxo em uma rede, chame o método IWMReader::Open do objeto leitor com a URL apropriada. Open é uma chamada assíncrona, por isso retorna imediatamente. Quando a fonte está pronta para leitura, o objeto leitor envia uma notificação de WMT_OPENED para o método de retorno de chamada IWMStatusCallback::OnStatus do aplicativo. Neste ponto, o aplicativo pode consultar o leitor para o modo de entrega chamando IWMReaderAdvanced2::GetPlayMode. Para conteúdo de rede, esse método retornará WMT_PLAY_MODE_DOWNLOAD, indicando conteúdo baixado, ou WMT_PLAY_MODE_STREAMING, indicando conteúdo transmitido.
Para começar a ler o arquivo ou fluxo, chame o IWMReader::Start método. O leitor envia uma notificação de WMT_BUFFERING_START quando começa a armazenar o conteúdo em buffer e uma notificação de WMT_BUFFERING_STOP quando o buffer é concluído. Enquanto o leitor estiver armazenando conteúdo em buffer (ou seja, entre essas duas notificações), talvez você queira exibir o progresso do buffer para o usuário. O método de IWMReaderAdvanced2::GetBufferProgress retorna a porcentagem de dados que foram armazenados em buffer e o tempo estimado restante. Para conteúdo baixado, você também pode ligar IWMReaderAdvanced2::GetDownloadProgress para obter o progresso do download. Chame estes métodos repetidamente para atualizar o seu ecrã, até que o armazenamento em buffer esteja concluído. O buffering pode ocorrer novamente durante a reprodução, devido a fatores como o congestionamento da rede. Se isso ocorrer, a aplicação receberá outra notificação de WMT_BUFFERING_START.
Quando o objeto leitor começa a reproduzir o conteúdo, ele envia uma notificação de WMT_STARTED. À medida que cada exemplo é decodificado e fica disponível para renderização, o leitor o passa para o aplicativo por meio do método de retorno de chamada IWMReaderCallback::OnSample. Neste ponto, o processo é o mesmo que para a reprodução de arquivos locais. Quando a reprodução termina, o leitor envia uma notificação de WMT_END_OF_STREAMING.
Tópicos relacionados