带有Alpha通道的QML视频

时间:2019-03-13 07:05:02

标签: qt opengl qml shader fragment-shader

我正在尝试在背景上复制带有Alpha通道的视频。不幸的是,当我播放视频时,显示了一个黑色的窗口。我认为这取决于Qt在Windows上使用的后端。

因此,我尝试应用合并两个视频的着色器效果,并使用其中一个作为另一个的遮罩。

这是我的QML代码:

Rectangle{
    width:462
    height: 347
    color: "transparent"


    Video {
        id: button
        source: "file:/F:/BlackBuffalo/gioco/symwin_0.mp4"
        anchors.fill: parent
        loops:MediaPlayer.Infinite
        layer.enabled: true
        layer.smooth: true

        autoPlay: true
        opacity: 0.0
    }


    Video {
        id: _mask
        source: "file:/F:/BlackBuffalo/gioco/symwin_0_mask.mp4"
        anchors.fill: parent
        loops:MediaPlayer.Infinite
        autoPlay: true

    }
    layer.enabled: true
    layer.samplerName: "maskSource"
    layer.effect: ShaderEffect {
        property variant source: button
        fragmentShader: "
                varying highp vec2 qt_TexCoord0;
                uniform highp float qt_Opacity;
                uniform lowp sampler2D source;
                uniform lowp sampler2D maskSource;
                void main(void) {
                    gl_FragColor = texture2D(source, qt_TexCoord0) * (texture2D(maskSource, qt_TexCoord0).r) * qt_Opacity;
                }
            "
    }


}

视频现在具有Alpha,但是颜色不符合预期,而且两个视频未完全同步,因此有时可以看到蒙版。

我做错了什么?

0 个答案:

没有答案