我想创建我自己的VNC
客户端,并想知道如何直接访问Linux上的系统显示内存?这样我就可以通过Socket将它发送出去,或者将其存储在本地文件中。如何访问Java程序中的系统显示内存/帧缓冲区?
我已经研究了一下,发现实现这一点的一种方法是以高帧率(截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。
但是,我觉得这个方法有点太重了。所以,正在寻找替代品。
请让我也知道是否有其他方法相同(仅使用Java
或Python
)?
我想创建我自己的VNC
客户端,并想知道如何直接访问Linux上的系统显示内存?这样我就可以通过Socket将它发送出去,或者将其存储在本地文件中。如何访问Java程序中的系统显示内存/帧缓冲区?
我已经研究了一下,发现实现这一点的一种方法是以高帧率(截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。
但是,我觉得这个方法有点太重了。所以,正在寻找替代品。
请让我也知道是否有其他方法相同(仅使用Java
或Python
)?
在Linux上
你不能直接访问系统显示内存。 Linux是一种内存保护的虚拟地址空间操作系统。哦,内核让你通过/dev
中的某个节点访问图形内存,但这通常不是你通常实现这种事情的方式。
同样在Linux中,您通常会运行类似X11的显示服务器(或将来基于Wayland协议的某种显示服务器),并且可能根本没有系统图形内存。
我已经研究了一下,发现实现这一点的一种方法是以高帧速率(屏幕截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。
这正是它的完成。使用显示系统的方法来捕获屏幕。这是做这件事唯一可靠的方法。请注意,如果转换或压缩是你的瓶颈,你也可以从图形内存中获取它。
谢谢。我想我会用屏幕截图然后:) – skwalker 2014-09-07 15:13:52