【问题标题】:Get window xid from handle for drawing GStreamer video in Python从句柄获取窗口 xid 以在 Python 中绘制 GStreamer 视频
【发布时间】:2017-01-08 00:15:02
【问题描述】:

我正致力于将 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。但是,这会返回一个无符号长的 8 字节 Node.js buffer

在python中有没有办法把这个Window句柄变成一个Window对象来找到xid?有没有办法根据无符号长句柄查找 xid?

【问题讨论】:

    标签: python gstreamer electron


    【解决方案1】:

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

    【讨论】:

    • 我就是这么想的。事实证明,即使使用此句柄,在其上绘图也存在问题,因为 Electron 通过 GPU,并且不能以与 GTK 绘图区相同的方式进行绘制。
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2013-01-25
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多