从句柄获取窗口xid,用于在Python中绘制GStreamer视频

时间:2016-08-31 11:58:02

标签: python gstreamer electron

我正在努力将Linux桌面应用程序移植到Emberjs Electron应用程序上以允许更加自定义的用户界面。虽然大多数控件都非常适合HTML和CSS,但我需要能够在Electron窗口内绘制十几个视频显示,我担心通过一堆RTSP流来实现这一点会很重要开销。

视频可以从我用Python构建的GStreamer管道中获得,通常我会使用以下内容在现有的GTK应用程序上绘制:

pipeline.add(src, sink)
src.link(sink)

window = Gtk.Window()
window.connect("delete-event", window_closed, pipeline)
window.set_default_size (1280, 720)
window.set_title ("Hello OpenGL Sink!")

drawing_area = Gtk.DrawingArea()
drawing_area.set_double_buffered (True)
window.add (drawing_area)

window.show_all()
window.realize()

xid = drawing_area.get_window().get_xid()
sink.set_window_handle (xid)

gtk.DrawingArea有一个get_window()方法,可用于查找要绘制的窗口和xid。 Electron的BrowserWindow有一个function to get the Window handle。但是,这会将unsigned long返回为8字节Node.js buffer

python中是否有办法将此Window句柄转换为Window对象以查找xid?有没有办法根据unsigned long句柄查找xid?

1 个答案:

答案 0 :(得分:0)

窗口句柄 XID。调用.readUInt32LE()将缓冲区转换为整数。