2014-09-06 54 views
0

我想创建我自己的VNC客户端,并想知道如何直接访问Linux上的系统显示内存?这样我就可以通过Socket将它发送出去,或者将其存储在本地文件中。如何访问Java程序中的系统显示内存/帧缓冲区?

我已经研究了一下,发现实现这一点的一种方法是以高帧率(截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。

但是,我觉得这个方法有点太重了。所以,正在寻找替代品。

请让我也知道是否有其他方法相同(仅使用JavaPython)?

回答

0

在Linux上

你不能直接访问系统显示内存。 Linux是一种内存保护的虚拟地址空间操作系统。哦,内核让你通过/dev中的某个节点访问图形内存,但这通常不是你通常实现这种事情的方式。

同样在Linux中,您通常会运行类似X11的显示服务器(或将来基于Wayland协议的某种显示服务器),并且可能根本没有系统图形内存。

我已经研究了一下,发现实现这一点的一种方法是以高帧速率(屏幕截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。

这正是它的完成。使用显示系统的方法来捕获屏幕。这是做这件事唯一可靠的方法。请注意,如果转换或压缩是你的瓶颈,你也可以从图形内存中获取它。

+0

谢谢。我想我会用屏幕截图然后:) – skwalker 2014-09-07 15:13:52