4

我正在 Qt(5) 中开发一个应用程序,基本上我正在尝试使用 QtMultimedia5 将相同的视频源渲染到我的窗口中的 2 个位置。我在 QML 中做,但如果有 C++ 中的解决方案,我会很乐意实现它。

在窗口中显示视频没有问题。当我尝试使用相同的 QMediaSource 但将其渲染到 2 个窗口/控件时,问题就开始了。

我看到正在发生的是调用 QMediaService::requestControl ,它返回一个 QVideoRendererControl 对象。然后调用 QVideoRendererControl::setSurface 来设置它渲染视频的表面。因此,据我所知,QMediaService 有一个表面,它可以在任何给定时间呈现视频。

如何渲染到 2 个或更多表面?还有其他课程更适合我的需要吗?

干杯

4

1 回答 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,以便着色器缩小原始图像的大小。

于 2012-10-13T13:39:00.460 回答