我想在内存中(而不是在屏幕上)渲染一个应用程序(例如浏览器),并将渲染结果流式传输到几个远程桌面。
我有什么选择?有没有一个Java框架(可能基于OpenGL)可以用来做这件事?
发布于 2011-06-24 05:05:48
OpenGL是一个绘图应用程序接口;完全不适合你的需求;只是告诉你把事情弄清楚。
整个“屏幕外操作”都需要连接到图形系统的下部。对于Java,这意味着要对JNI进行认真的修补,可能还要修改一些本机二进制代码。我不值得这样做,因为有一个更好的解决方案:
Xorg有一个由VNC帧缓冲区(Xvnc)支持的X服务器。你可以在这样的环境中启动浏览器,如果没有窗口管理器和运行的桌面环境,浏览器将是唯一可见的,没有装饰,标题栏或类似的东西。然后,您使用VNC连接到该服务器,将只看到浏览器的图片。从技术上讲,VNC只是JPEG图像的视频流,并且有一些工具可以从VNC创建常规的视频流。
X为您提供了一种额外的可能性:复合扩展。X复合提供了一种将窗口转移到屏幕外渲染区域的机制。呈现到屏幕外区域的内容必须由所谓的合成器合成到屏幕上。将这些屏幕外图像复制到进程内存中并从那里构建视频流是可能的,尽管效率很低。
发布于 2011-06-24 04:52:34
根据您要做的事情,您可以在linux机器上运行您的应用程序,并通过SSH将应用程序的输出流式传输到另一台机器上的xserver。我相信有适用于Windows和MacOS的xserver,但这会让你远离Java。
http://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html
https://stackoverflow.com/questions/6460243
复制相似问题