Reprodução de fluxo web do ASF no DirectShow

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, 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 Microsoft DirectShow dá suporte a fluxos da Web em cenários de reprodução de arquivos por meio do filtro leitor do ASF do WM , mas você deve escrever seu próprio filtro DirectShow para capturar e persistir o fluxo.

Observação

Para reproduzir fluxos da Web no conteúdo que está sendo transmitido de um servidor que executa os Serviços de Mídia do Windows, use o controle ActiveX® da série Reprodutor Multimídia do Windows 9 inserido em uma página da Web.

 

Quando dado um arquivo que contém fluxos do tipo WMMEDIATYPE_FileTransfer, o Leitor do ASF do WM criará um pino de saída para ele. O bloco de formato será uma estrutura WMT_WEBSTREAM_FORMAT . (Essa estrutura está documentada na documentação do SDK de Formato de Mídia do Windows.) Se nenhum filtro downstream estiver disponível que possa lidar com esse tipo de mídia, o pino permanecerá desconectado, mas o arquivo ainda reproduzirá os fluxos de áudio e/ou vídeo.

Cada exemplo de mídia em um fluxo da Web contém uma estrutura WMT_WEBSTREAM_SAMPLE_HEADER , que está documentada na documentação do SDK de Formato de Mídia do Windows. A estrutura tem um comprimento variável dependendo do comprimento de seu membro wszURL . O ponteiro para os dados de exemplo aponta inicialmente para essa estrutura e você deve avançar o ponteiro para além da estrutura para acessar os dados reais no fluxo.

O filtro do manipulador de fluxo da Web deve ser baseado na classe CBaseRenderer . No método CBaseRenderer::D oRenderSample , o filtro precisará analisar a estrutura para obter informações sobre o fluxo da Web e executar a ação apropriada. Normalmente, isso envolverá salvar o arquivo em disco e, em seguida, chamar as funções CreateUrlCacheEntry e CommitUrlCacheEntryW ou CommitUrlCacheEntryA para colocar os arquivos no cache de Explorer da Internet. O filtro deve manipular arquivos de várias partes, ou seja, arquivos maiores que um exemplo e também deve manipular comandos de renderização, que são especificados pelo membro WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType . O filtro envia um evento EC_OLE_EVENT para o aplicativo, juntamente com o texto da cadeia de caracteres WMT_WEBSTREAM_SAMPLE_HEADER.wszURL que contém o nome do arquivo a ser renderizado. Em seguida, o aplicativo faz com que o navegador exiba a página especificada. Se o fluxo da Web tiver sido criado corretamente, o arquivo já deverá estar no cache.

Para obter mais informações sobre WMT_WEBSTREAM_FORMAT e WMT_WEBSTREAM_SAMPLE_HEADER, consulte a documentação do SDK de Formato de Mídia do Windows.

Lendo arquivos ASF no DirectShow