在GStreamer Vid上覆盖其他GUI元素

2024-06-16 11:57:48 发布

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

我有一个用Python、pygtk2.24和PyGST(GStreamer)构建的项目。我的视频在gtk图纸区域对象。在

但是,我需要在这个视频播放时显示其他GUI元素。(请不要问为什么,相信我)现在,他们似乎都落后了。在代码中,视频对象(和gtk图纸区域)声明并放入gtk.固定首先,紧随其后。在

那么,我该怎么做呢?是否需要更改GStreamer正在播放的对象?我知道这是有可能的……我见过GStreamer程序,在视频上面有按钮和标签。在

提前谢谢!在


Tags: 项目对象代码程序声明区域元素gtk
2条回答

可能对操作没用,但我花了很长时间寻找一种方法,将小部件放在gtk.gdk.可提取元素(可以是静态绘制的图像、动画或视频),然后我终于在pygtk2中找到了这个方法。在

这是我想出的一个链接:http://bazaar.launchpad.net/~damien-moore/picty/trunk/view/642/modules/picty/overlay_widgets.py

这包括3个自定义类:

比例布局:一个自定义的实现gtk.集装箱它允许用户使用比例定位子部件。在

DrawableOverlay:一个事件框,它发出一个“draw”事件供用户连接和绘制,并在顶部显示一个比例布局。在

drawableOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlay。在

示例main程序说明了如何使用它们。代码应该相当简单,以适应视频应用程序。在

您可以在gtk3.2及更高版本中使用^{}来实现这一点。在

如果您不能升级,下面是一个老式方法的总结:连接到DrawingAreaexpose-event信号,并使用Cairo绘制自己的信息。当信息更改时,使用widget.queue_draw()触发绘图区域的重绘。确保处理程序在将实际视频绘制到绘图区域的处理程序之后运行。这将适用于标签和非交互式GUI元素。在

如果你想让一个真正起作用的GUI元素悬停在你的视频上方,那就更复杂了,我不知道怎么做。我不认为Fixed保证任何z顺序。我怀疑你的按钮和其他没有被绘制到绘图区域的视频所覆盖,所以可能触发你的expose-event处理程序中的那些按钮的重画将起作用。在

相关问题 更多 >