Qt覆盖图vlc vid上的QGraphicsView

2024-10-16 17:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的项目中实现VLC播放器时遇到了一些问题。我需要重叠视频与QgraphicsView(basical画布)这样我可以画东西。我试过这样做:

  1. 将winId指针指向QgraphicsView。视频渲染得很好,但它在对象的顶部呈现,所以我的图形项在视频层下。=>;失败
  2. 创建新的QGraphics对象作为我的主QGraphics对象的子对象,然后将视频呈现给这个子对象。结果同上。=>;失败
  3. 用我的QGraphicsView(相同的位置和大小)覆盖QWidget和渲染的视频。我已经设置了透明的背景,这样我就可以看到覆盖的小部件,但这一层下的视频就是无法呈现。我保持白色,但我能听到它在演奏。=>;失败

我在这个论坛上读到,有人提取每一帧,并将其设置为对象的像素映射。我看到了代码,但FuttTalely,我没有得到它,因为我不是C++专业:(我正在使用Python绑定QT(pySead)和VLC。请帮忙,我真的很烦

http://forum.videolan.org/viewtopic.php?f=32&t=68816&p=228645


Tags: 项目对象gt图形视频画布播放器指向
2条回答

最近,我用了集成声子播放器。可以通过qgraphicsproxy widget添加声子视频小部件作为GraphicsItem。在Windows背景下使用K-Lite编解码器包就像一个魅力。在

我知道这个问题是很久以前的事了,但我今天在想弄清楚的时候碰到了这个问题,我想我应该提出我的解决方案。在

你的第三次尝试基本上是正确的,但是你也必须使你使用的QGraphicsView透明,因为那是你看到的白色。你只需要用setGeometry手动确保视图跟踪你的窗口,你就可以设置了。在

#assuming you're inside a main window that is self
scene = QGraphicsScene()
scene.setBackgroundBrush(QBrush(QColor(255, 0,0,90))) #creates a semitransparent red over VLC

view = QGraphicsView(self)
view.setScene(self.scene)
view.setGeometry(0,0,self.width(),self.height())

self.view.setStyleSheet("background: transparent");

相关问题 更多 >