Partilhar via


Criando objetos de fluxo multimídia e exemplos de fluxo

[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.

 

Os objetos que dão suporte à interface IMultiMediaStream são os contêineres básicos para fluxos de dados multimídia. A interface IMultiMediaStream inclui métodos que enumeram os fluxos de dados do objeto; Esses fluxos normalmente são dados de vídeo e áudio, mas podem incluir dados de qualquer formato, como legendagem oculta, texto sem formatação ou código de tempo SMPTE. No entanto , a interface IMultiMediaStream é um contêiner genérico; os desenvolvedores podem criar outras versões da interface que dão suporte a formatos de dados específicos. Objetos que implementam a interface IAMMultiMediaStream , por exemplo, podem enumerar e controlar fluxos de qualquer formato de dados DirectShow. Como fluxos de dados individuais são específicos de formato, eles dão suporte a pelo menos duas interfaces diferentes: uma genérica e outra específica de dados. Cada fluxo dá suporte à interface IMediaStream , que fornece métodos para recuperar seu formato e um ponteiro para o próprio fluxo. A interface IDirectDrawMediaStream , por outro lado, tem métodos que lidam especificamente com a renderização de dados de vídeo. Qualquer interface derivada de IMultiMediaStream também dá suporte à criação de exemplos de fluxo, as unidades básicas de dados de streaming.

Um exemplo de multimídia é uma referência a um objeto que contém os dados de mídia. Para uma imagem de vídeo, esta é uma superfície DirectDraw. O conteúdo exato do exemplo varia, dependendo do tipo de mídia (som, texto e assim por diante). Como um exemplo é apenas uma referência ao objeto de dados, qualquer número de amostras de fluxo pode se referir ao mesmo objeto. A interface IStreamSample fornece métodos que obtêm e definem as características de uma amostra, como sua hora de início e parada, status e associação de fluxo. O método IStreamSample::Update atualiza os dados do exemplo no caso de fluxos legíveis. Para fluxos graváveis, ele gravará os dados do exemplo no fluxo. Normalmente, você usa o método Update em um loop que renderiza, transfere ou armazena dados de streaming.

Sobre a arquitetura de streaming multimídia