Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize 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.]
[Esta API não é suportada e pode ser alterada ou indisponível no futuro.]
Este artigo descreve a mistura alfa no DirectShow Editing Services (DES).
Alpha mede a transparência de um pixel ou imagem. No vídeo RGB não comprimido de 32 bits, quatro componentes definem cada pixel: um canal alfa (A) e três componentes de cor (RGB). Um pixel com um valor alfa de zero é completamente transparente. Um pixel com um valor alfa de 255 é opaco. Entre esses valores, o pixel tem vários graus de transparência.
O DirectShow define dois tipos de mídia para vídeo RGB de 32 bits:
- MEDIASUBTYPE_ARGB32: O vídeo é RGB de 32 bits com um canal alfa válido.
- MEDIASUBTYPE_RGB32: Os pixels são de 32 bits, mas o canal alfa não é necessariamente válido.
Para executar a técnica de alpha blending em DES, defina o tipo de mídia não compactada do grupo de vídeo como MEDIASUBTYPE_ARGB32. Em C++, chame o método IAMTimelineGroup::SetMediaType. No formato XTL, ao definir o atributo bitdepth do grupo elemento para 32, também se alcança isso.
Em seguida, você precisa de dados de vídeo que contenham um canal alfa. Existem várias opções:
- Você pode usar um arquivo AVI que já tenha vídeo RGB de 32 bits com dados alfa. Atualmente, o alfa não é suportado para arquivos de origem MPEG ou Microsoft Windows Media Format (WMF).
- O DES suporta ficheiros bitmap de 32 bits (.bmp) e Targa (.tga) com dados alfa.
- Você pode escrever um filtro de origem personalizado que cria dados RGB de 32 bits com alfa. O tipo de mídia de saída deve ser MEDIASUBTYPE_ARGB32. Use o filtro como o subobjeto em um objeto de origem de linha temporal.
Se a fonte de vídeo não tiver alfa, você poderá usar um efeito que crie dados alfa. O Alpha Setter Effect define o canal alfa para toda a imagem para um valor constante. Para variar o alfa ao longo do tempo, use o IPropertySetter interface com o Alpha Setter Effect. A fonte original não precisa ser de 32 bits, desde que o tipo de mídia não compactada do grupo seja MEDIASUBTYPE_ARGB32.
Finalmente, passe o vídeo para um efeito ou transição que execute a fusão alfa. O Compositor Transition executa a mistura alfa e o Key Transition pode ser codificado por valor alfa.
O projeto XTL de exemplo a seguir executa a mistura alfa:
<timeline>
<group type="video" bitdepth="32" width="320" height="240">
<track>
<clip start="0" stop="6" src="c:\Example.avi" />
</track>
<track>
<clip start="0" stop="6" src="c:\Example2.avi">
<!-- Alpha Setter effect. -->
<effect clsid="{506D89AE-909A-44f7-9444-ABD575896E35}" start="0" stop="6">
<param name="alpha" value="255">
<linear time="6" value="0" />
</param>
</effect>
</clip>
<!-- Key transition, with alpha keying. -->
<transition clsid="{C5B19592-145E-11d3-9F04-006008039E37}" start="0" stop="6">
<param name="KeyType" value="3" />
</transition>
</track>
</group>
</timeline>
Tópicos relacionados