Escolhendo o renderizador de vídeo correto

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

O DirectShow fornece vários filtros de renderizador de vídeo, resumidos na tabela a seguir.

Filtrar Comentários
EVR (Renderizador de Vídeo Avançado ) Usa o Direct3D 9. Requer o Windows Vista ou posterior.
Renderizador de Combinação de Vídeo 9 (VMR-9) Usa o Direct3D 9. Requer o Windows XP ou posterior.
Filtro de combinação de vídeo 7 (VMR-7) Usa DirectDraw. Requer o Windows XP ou posterior.
Mixer de Sobreposição Dá suporte a sobreposições de hardware por meio do DirectDraw.
Filtro do Renderizador de Vídeo Herdado . Usa DirectDraw ou (raramente) GDI

 

Qual renderizador usar depende em grande parte de quais versões do Windows você precisa dar suporte.

  • No Windows Vista e posterior, os aplicativos devem usar o EVR se o hardware der suporte a ele. Caso contrário, volte para a VMR-9 ou VMR-7. O EVR oferece melhor desempenho e melhor qualidade de vídeo do que os renderizadores anteriores. Além disso, ele foi projetado para funcionar com o DWM (Gerenciador de Janelas da Área de Trabalho).
  • Antes do Windows Vista, use a VMR-9 se o hardware der suporte a ela e a funcionalidade de porta de vídeo não for necessária. Caso contrário, use a VMR-7.
  • Em sistemas mais antigos, talvez seja necessário usar o Mixer de Sobreposição (para suporte à sobreposição de hardware ou porta de vídeo) ou o filtro herdado do Renderizador de Vídeo.

Os métodos IGraphBuilder::Render e RenderFile usam a VMR-7 por padrão. Se o hardware não der suporte à VMR-7, esses métodos retornarão ao filtro do Renderizador de Vídeo herdado. O EVR e a VMR-9 nunca são os renderizadores padrão.

Renderização de vídeo