我正在尝试创建自己的VNC
客户端,并想知道如何在Linux上直接访问系统显示内存?这样我就可以通过Socket发送它或者将它存储在本地文件中。
我研究了一下,发现实现此目的的一种方法是以高帧率捕获屏幕(屏幕截图),将其转换为RAW格式,压缩并将其存储在ArrayList中。
但是,我发现这种方法有点太资源了。所以,正在寻找替代方案。
请让我也知道是否还有其他方法(仅使用Java
或Python
)?
答案 0 :(得分:0)
直接访问Linux上的系统显示内存
你做不到。 Linux是受内存保护的虚拟地址空间操作系统。哦,内核允许你通过/dev
中的某个节点访问图形内存,但这不是你通常实现这种事情的方式。
同样在Linux中,你通常运行像X11这样的显示服务器(或者将来运行基于Wayland协议的显示服务器),可能根本就没有系统显存。
我研究了一下,发现实现这一目标的一种方法是以高帧率(屏幕截图)捕获屏幕,将其转换为RAW格式,压缩并将其存储在ArrayList中。
这正是它的完成方式。使用显示系统的方法捕获屏幕。这是唯一可行的方法。请注意,如果转换或压缩是您的瓶颈,那么您也可以从图形内存中获取它。