【问题标题】:Real-time screensharing to Java app (localhost)实时屏幕共享到 Java 应用程序 (localhost)
【发布时间】:2015-01-23 10:37:48
【问题描述】:

我正在寻找一种将覆盖添加到正在运行的 Windows 游戏的方法,例如 OBS(一个游戏流媒体应用程序,用于 Twitch)。

我想使用 Robot 类每秒截取 25/30 个屏幕截图并显示它们,但我不确定这是正确的解决方案..

所以我的问题如下:我如何screenshare一个正在运行的应用程序到一个Java应用程序(本地主机,同一台计算机),以便在它前面添加一个覆盖?

编辑:我尝试使用 VLC 流媒体,但这会使计算机非常滞后(i7/8Gb)...我也尝试使用 FFMpeg,使用 screen-capture-recordergdigrab,计算机是不滞后,但视频实时下降 5/10 FPS。
在 FFMpeg 中,我使用了以下命令:ffplay -f dshow -f gdigrab -i title="<NAME>" -framerate 30

我想要一台 25/30 FPS 的游戏电脑 (i7/8Gb)..

【问题讨论】:

  • 当您说stream 时,您究竟指的是什么低级Java 对象作为结果?一个不断馈送的InputStream,您可以在其中从另一个线程/程序读取帧数据?
  • 我并不真正关心 Java 对象类型。它只需要在JPanel 中显示即可:)。应用是客户端,服务端可以是第三方软件(如VLC),也可以直接集成在应用中。

标签: java swing overlay screensharing


【解决方案1】:

试试java-screen-recorder,它是一个简单的屏幕捕捉和转换器。它不是很消耗 cpu/gpu。基于java.awt.Robot的解决方案,重复抓屏。

【讨论】:

  • 我不确定这个工具是否允许用户实时流式传输(我不想将屏幕录制到文件中稍后观看,而是流式传输)..跨度>
  • 互联网上有很多开源的!你可以走得更远,将 screen-recoder 与 f.e. 连接起来。 Xuggler Streaming
  • 如果您认为应该可行,您能否提供一个应该以 25/30FPS 运行以流式传输应用程序的源代码示例?
【解决方案2】:

我曾经使用 Robot & Corba 开发了SimRat(一个简单的屏幕共享应用程序,例如 Teamviewer)。您可能能够通过查看代码获得一个基本概念。这不是实现屏幕共享的最佳方式。 Java RMI 会对您有所帮助。

【讨论】:

  • 我尝试了一些方法,使用Robot 类的屏幕截图在我的情况下看起来是最快的。所以我会接受这个答案!谢谢:)
  • 是的...我也使用openairplay,也是技术共享屏幕之一...。但我想知道声音流如何变得可用...。
猜你喜欢
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多