我正在努力将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?
答案 0 :(得分:0)
窗口句柄是 XID。调用.readUInt32LE()
将缓冲区转换为整数。