Hierarquia de interface e objeto de streaming multimídia
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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.]
Observação
Essas APIs foram preteridas. Os aplicativos devem usar o filtro Grabber de Exemplo ou implementar um filtro personalizado para obter dados de um grafo de filtro do DirectShow.
O diagrama a seguir mostra a hierarquia de objetos usada no streaming multimídia.
A arquitetura de streaming multimídia define três tipos gerais de objeto:
- O objeto AMMultimediaStream expõe a interface IAMMultiMediaStream . Internamente, esse objeto encapsula o grafo de filtro do DirectShow.
- Objetos de fluxo de mídia expõem a interface IMediaStream e são específicos de dados. O objeto AMMultimediaStream contém um ou mais fluxos de mídia.
- Objetos de exemplo de fluxo contêm os dados de um fluxo específico.
Há suporte para os seguintes objetos de fluxo de mídia:
- Fluxo de áudio. Expõe a interface IAudioMediaStream .
- Fluxo do DirectDraw. Representa um fluxo de vídeo renderizado para uma superfície DirectDraw. Expõe a interface IDirectDrawMediaStream .
- Fluxo de tipo de mídia. Representa dados arbitrários. Expõe a interface IAMMediaTypeStream .
Cada objeto de fluxo de mídia cria seu próprio tipo de objeto de exemplo de fluxo:
- Os fluxos de áudio criam exemplos de áudio, que expõem a interface IAudioStreamSample .
- Os fluxos DirectDraw criam exemplos do DirectDraw, que expõem a interface IDirectDrawStreamSample .
- Os fluxos de tipo de mídia criam exemplos de tipo de mídia, que expõem a interface IAMMediaTypeSample .
O diagrama a seguir mostra a hierarquia de interface para as interfaces listadas anteriormente: