gpt4 book ai didi

c++ - Qt(5) : Render same video on 2 different surfaces using QtMultimedia

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:27 24 4
gpt4 key购买 nike

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

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

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

如何渲染到 2 个或更多表面?还有其他类(class)更适合我的需求吗?

干杯

最佳答案

好吧,这相当简单,虽然不是我预期的方式。您一定会喜欢 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,以便着色器缩小原始图像。

关于c++ - Qt(5) : Render same video on 2 different surfaces using QtMultimedia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12817258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com