Mac*_*Mac 7 qt alphablending qml qtquick2
我正在尝试使用RGBA中的视频在QML中获得alpha混合效果.
现在的问题是QtMultimedia提供的视频项实际上在QtQuick场景中打开了一个重叠窗口,所以我认为不可能将其他QML元素与视频元素进行alpha混合(我当然希望我错了,但是我找不到解决方案).
另一种方法是在updatePaintNode方法中自己在一个继承自QQuickItem的类中呈现视频.
以前有人见过这样的事吗?如果QtMultimedia背后的人无法实现它,它甚至可能吗?
我可以更改MediaPlayer元素的背景,可能是透明的还是只是QML中的颜色?
到目前为止,我一直在考虑QAbstractVideoSurface和QVideoFrame但我不知道如何将其渲染到QSG上,甚至不知道GeometryNode应该如何查找视频.
最好的解决方案是在其他QML元素中进行alpha混合,例如:
Rectangle {
width: 1024
height: 768
color: "yellow"
focus: true
Video {
id: video
anchors.fill: parent
source: "alpha-video.mov"
autoPlay: true
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我尝试了一些方法,但最终我使用了名为 VideoWidget 的 Qt 示例,该示例使用 QAbstractVideoSurface 和 QVideoFrame,并在 QQuickPaintedItem 中绘制帧,使用 MediaPlayer 从 QML 加载数据。
将 ARGB32 放在描述 QAbstractVideoSurface 中支持的像素格式的 QList 之上很重要,不幸的是,Qt 逻辑是它们采用第一个可用格式,这就是为什么本机 Video 元素不显示 alpha 通道(它播放RGB32 格式的视频,或者它是在本机元素中覆盖窗口的东西,而不是在 QtQuick 场景图中绘制它)。