如何播放带alpha通道的视频(透明度)?

时间:2013-11-06 21:05:30

标签: c# wpf animation video-processing

是否可以在MediaElementMediaPlayer(C#WPF)中播放具有透明度的视频 在背面有背景,所以背景会出现在视频的透明区域?

我研究了答案但找不到答案,我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

我担心MediaElement不会保留必要的信息。但是,颜色键控可能是最简单的解决方案。

您需要创建一个视频,其中透明部分变为127,127,127(RGB),然后在着色器中将它们更改为透明。

着色器看起来像这样:

sampler2D input : register(s0); 

bool equals(float f1, float f2) 
{ 
    float f = abs(f1 - f2); 
    return f < 0.0001f; 
} 

float4 main(float2 uv : TEXCOORD) : COLOR 
{    
    float4 result = tex2D(input, uv);     

    if( (equals(result.r, 127)) && 
        (equals(result.g, 127)) && 
        (equals(result.b, 127)) ) 
    { 
        // make transparent?!
        result.r = 0; 
        result.g = 0; 
        result.b = 0; 
        result.a = 0; 
    } 

    return result; 
}