使用XOverlay进行GStreamer窗口管理

时间:2013-11-15 22:09:17

标签: video gtk gstreamer

我正在尝试使用GStreamer 0.10.36编写将在ARM处理器上运行的媒体播放器应用程序。我的目标是让两个视频之间的过渡期尽可能短,并希望完全消除它。目前为了实现这一点,我使用两个管道,每个管道都有自己的源和接收器。我正在使用的处理器允许相同类型的多个接收器垫(我使用的是Freescale i.MX6Q mfw_isink元素)。当我到达第一个视频的末尾时,我改变了管道的状态,以便第二个视频开始播放。在看到第二个视频之前可能有半秒钟的延迟,在此期间桌面可见。我相信正在发生的事情是第二个视频在播放前打开一个新窗口。如果这是真的,那么我需要使用XOverlay窗口ID来告诉第二个视频打开哪个窗口,但我不确定实际需要做什么。我见过的所有xoverlay示例都带有大量的GUI代码,我无法确定它是什么。

有人可以解释获取/设置窗口ID所需的内容,以便我可以始终在同一个窗口中播放吗?我将其作为C ++应用程序编写,可以使用GTK + 2.0,但我希望远离任何QT方法。

提前谢谢你, Josh Kurland

2 个答案:

答案 0 :(得分:2)

gst-plugins-base/tests/examples/overlay/提供了有关如何将叠加层与各种工具包一起使用的示例。关于延迟,你最好使用playbin,因为它具有无缝播放的功能。当接近第一个视频结束时,它将准备第二个视频。最后考虑使用gstreamer-1.X,因为0.10处于维护模式。

答案 1 :(得分:0)

使用gtk_widget_get_window(),您可以获得任何已实现小部件的GdkWindow。如果您需要其X ID,请使用GDK_WINDOW_XID()

使用gtk_widget_set_window()设置小部件的GdkWindow。阅读有关警告的文档。