【问题标题】:Browser rendering and streaming浏览器渲染和流式传输
【发布时间】:2011-06-23 20:28:45
【问题描述】:

我想在内存中(而不是在屏幕上)渲染应用程序(例如浏览器)并将渲染结果流式传输到几个远程桌面。

我有什么选择?有没有我可以使用的 Java 框架(可能基于 OpenGL)?

【问题讨论】:

  • 类似teamviewer的东西?还是我误会了?
  • 不同之处在于 teamviewer 捕获一个屏幕并将其复制到其他屏幕。我想要的是捕捉内存中的东西,而不一定是屏幕上的东西。 opengl.org/discussion_boards/… 这里有一个讨论,展示了如何在 OpenGL 中完成。我需要看看我是否可以使用 JOGL 来做同样的事情。
  • java 将不允许您访问驻留在当前 java 进程之外的内存区域。
  • 您链接的 opengl.org 上的线程处理一个非常具体的案例,即 PBuffer。这是一个屏幕外缓冲区,由相关应用程序创建,专门支持 OpenGL。您不能使用 PBuffer 重定向那里的其他应用程序。

标签: java firefox opengl rendering


【解决方案1】:

OpenGL 是一个绘图 API;完全不适合您的要求;只是告诉你把事情弄清楚。

整个“在屏幕外做事”需要连接到图形系统的下部。对于 Java,这意味着对 JNI 以及可能还有一些本机二进制代码进行认真的修补。恕我直言,不值得努力,因为有一个更好的解决方案:

Xorg 有一个由 VNC 帧缓冲区 (Xvnc) 支持的 X 服务器。您可以在其中启动浏览器,如果没有运行窗口管理器和桌面环境,浏览器将是唯一可见的东西,没有装饰、标题栏等。然后您使用 VNC 连接到该服务器,并且只会看到浏览器的图片。从技术上讲,VNC 只是 JPEG 图像的视频流,并且有一些工具可以从 VNC 创建常规视频流。

X 为您提供了另一种可能性:Composite 扩展。 X Composite 提供了一种将窗口转移到屏幕外渲染区域的机制。渲染到屏幕外区域的内容必须由所谓的 compositor 合成到屏幕上。将这些屏幕外图像复制到进程内存并从那里构建视频流是可能的,尽管效率很低。

【讨论】:

  • 谢谢,不是我所期待的,而是一个知识渊博的答案。
【解决方案2】:

根据您要执行的操作,您可以在 linux 机器上运行您的应用程序,并通过 SSH 将应用程序的输出流式传输到另一台机器上的 xserver。我相信有适用于 Windows 和 MacOS 的 xserver,但这让你远离 Java。

http://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 2013-04-18
    • 2010-09-14
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多