如何在Java程序中访问系统显示内存/帧缓冲区?

时间:2014-09-06 10:28:20

标签: java python memory vnc

我正在尝试创建自己的VNC客户端,并想知道如何在Linux上直接访问系统显示内存?这样我就可以通过Socket发送它或者将它存储在本地文件中。

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

但是,我发现这种方法有点太资源了。所以,正在寻找替代方案。

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

1 个答案:

答案 0 :(得分:0)

  

直接访问Linux上的系统显示内存

你做不到。 Linux是受内存保护的虚拟地址空间操作系统。哦,内核允许你通过/dev中的某个节点访问图形内存,但这不是你通常实现这种事情的方式。

同样在Linux中,你通常运行像X11这样的显示服务器(或者将来运行基于Wayland协议的显示服务器),可能根本就没有系统显存。

  

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

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