使用QtMultimedia在两个不同的表面上呈现相同的视频:Qt(5)

4
我正在使用Qt(5)开发一个应用程序,基本上我正在尝试使用QtMultimedia5将相同的视频源呈现在我的窗口中的两个位置。我正在QML中进行操作,但如果C++有解决方案,我很乐意实现它。
我没有问题在窗口中显示视频。当我尝试使用同一QMediaSource但将其渲染到2个窗口/控件时出现问题。
我看到发生的事情是调用了QMediaService :: requestControl,它返回一个QVideoRendererControl对象。然后调用QVideoRendererControl :: setSurface来设置它呈现视频的表面。 因此,据我所知,QMediaService每次只有一个表面可以呈现视频。
如何在2个或更多表面上呈现?是否有其他更适合我需求的类?
干杯
1个回答

7

这很简单,但不是我预期的方式。你一定会喜欢QtQuick2。

所以,在我的QML代码中,我有一个MediaPlayer源和一个VideoOutput项目:

MediaPlayer {
    id: mp1
    source: "slide-1.wmv"
}
VideoOutput {
    id: tbltSlides
    anchors.fill: parent
    visible: true
    source: mp1
}

我只需要添加一个ShaderEffectSource并将tbltSlides设置为其来源。 非常简单:
ShaderEffectSource {
    id: slides
    x: 600
    width:250
    height: 250
    sourceItem: tbltSlides
    visible: true
}

编辑:显然,为了获得最佳质量,您需要将tbltSlides项目放大到ShaderEffectSource以上,以便着色器缩小原始图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接