Visão geral do sistema 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 desafio da multimídia

Trabalhar com multimídia apresenta vários desafios principais:

  • Os fluxos multimídia contêm grandes quantidades de dados, que devem ser processados muito rapidamente.
  • O áudio e o vídeo devem ser sincronizados para que sejam iniciados e interrompidos ao mesmo tempo e reproduzidos na mesma taxa.
  • Os dados podem vir de muitas fontes, incluindo arquivos locais, redes de computadores, transmissões de televisão e câmeras de vídeo.
  • Os dados vêm em uma variedade de formatos, como Audio-Video AVI (Intercalado), ASF (Formato Avançado de Streaming), MPEG (Motion Picture Experts Group) e DV (Vídeo Digital).
  • O programador não sabe com antecedência quais dispositivos de hardware estarão presentes no sistema do usuário final.

A solução DirectShow

O DirectShow foi projetado para enfrentar cada um desses desafios. Sua meta de design main é simplificar a tarefa de criar aplicativos de mídia digital na plataforma Windows, isolando aplicativos das complexidades de transportes de dados, diferenças de hardware e sincronização.

Para obter a taxa de transferência necessária para transmitir vídeo e áudio, o DirectShow usa Direct3D e DirectSound sempre que possível. Essas tecnologias renderizam dados com eficiência para as placas gráficas e de som do usuário. O DirectShow sincroniza a reprodução encapsulando dados de mídia em exemplos com carimbo de data/hora. Para lidar com a variedade de fontes, formatos e dispositivos de hardware possíveis, o DirectShow usa uma arquitetura modular, na qual o aplicativo combina e corresponde a diferentes componentes de software chamados filtros.

O DirectShow fornece filtros que dão suporte a dispositivos de captura e ajuste com base no Modelo de Driver do Windows (WDM), bem como filtros que dão suporte a cartões de captura de Vídeo para Windows (VfW) mais antigos e codecs gravados para as interfaces do Gerenciador de Compactação de Áudio (ACM) e do VCM (Gerenciador de Compactação de Vídeo).

O diagrama a seguir mostra a relação entre um aplicativo, os componentes do DirectShow e alguns dos componentes de hardware e software compatíveis com o DirectShow.

arquitetura de alto nível

Conforme ilustrado aqui, os filtros do DirectShow se comunicam e controlam uma ampla variedade de dispositivos, incluindo o sistema de arquivos local, o sintonizador de TV e as placas de captura de vídeo, codecs VfW, a exibição de vídeo (por meio de DirectDraw ou GDI) e o som cartão (por meio do DirectSound). Assim, o DirectShow isola o aplicativo de muitas das complexidades desses dispositivos. O DirectShow também fornece filtros nativos de compactação e descompactação para determinados formatos de arquivo.

Sobre o DirectShow