当前位置: 首页 > 知识库问答 >
问题:

Java屏幕捕获OpenGL和DirectX全屏应用程序

刘绍晖
2023-03-14

我正试图用java设计一个程序,定期(每100毫秒左右)拍摄我的屏幕截图,并计算整个屏幕的平均像素rgb值。我需要这个来处理视频游戏和iTunes/Quicktime视频。然而,我曾尝试使用JNA和robot来捕获屏幕,它只在我没有捕获全屏或iTunes视频的视频游戏时起作用。例如,我通过保存一个图像来测试代码,以检查并查看发生了什么。当我玩电子游戏时,我只看到一个空白窗口的截图。我认为这是因为游戏使用directx或openGL,并且与硬件的通信方式与典型应用不同。

如果我用这种方法来捕捉屏幕截图,而不是机器人或JNA,这能解决我的问题吗?它看起来像是在从openGL屏幕缓冲区复制数据。DirectX应用程序呢?

我基本上只是希望能够随时在屏幕上获取感知到的像素数据。不管它是否是全屏DirectX或OpenGL应用程序。提前感谢你的帮助。

共有1个答案

韶兴德
2023-03-14

我猜这是一个自制版本的amBX照明系统。即使不是这样,下一页可能会对你有所帮助;它包含DIY环境照明设置的java代码和arduino代码,需要完成相同的任务:

http://siliconrepublic.blogspot.com/2011/02/arduino-based-pc-ambient-lighting.html

需要考虑的事情: 1.由于处理速度的原因,该示例代码故意忽略了屏幕2上的一些像素。根据你所显示的内容(赛车游戏与第一人称射击游戏与自上而下的视角策略或竞技类游戏与电影),你可能想故意将显示器分割成不同的扇区。例如,对于一个赛车游戏,你可能希望左右两边都更加独立,对快速变化非常敏感,而对于一般的电影观看,你可能希望有更一般的输出,因为你要处理相机可以处理的更广泛的方式移动。

 类似资料:
  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • [For Windows]我知道可以捕获在C#语言下运行的DirectX程序的屏幕,但您知道一些Java示例代码吗? 我实际上面临着同样的问题比这拿全屏应用程序与java内部的屏幕截图?。机器人课没有帮助,也没有效果。 但我在互联网上没有找到任何与此相关的java代码样本。感谢您在这个话题上提供的帮助。

  • 我正在使用Python 2.7和OpenCV 2.4。9 我需要捕获显示给用户的当前帧,并将其加载为Python中的cv::Mat对象。 你们知道一种快速递归的方法吗? 我需要像下面的例子中所做的那样,从网络摄像头递归地捕获Mat帧: 在本例中,它使用了VideoCapture类来处理从网络摄像头捕获的图像。 用视频捕捉。read()新帧总是被读取并存储到Mat对象中。 我可以将“打印屏幕流”加载

  • 问题内容: 我想找出一个如何使用Java捕获截屏视频。我知道使用Robot类可以获取屏幕截图,但是如何将其捕获为视频并将其上传到服务器呢?那将如何工作? 想法? 问题答案: 使用纯Java解决方案,我怀疑它是否会起作用,但这当然取决于您对“视频”的解释。 在分辨率为1920x1200的台式机上,使用Java Robot捕获整个屏幕时,每秒可以获取约20帧。由于每个图像都包含> 6 MB的未压缩数据

  • 我使用的是使用Java机器人类截屏的标准方法,即: 这在大多数情况下都可以正常工作,但它只是在全屏应用程序中拍摄一个空白屏幕的照片(我使用的是Windows 7,所以大多数应用程序都使用Direct X全屏)。这是机器人类的已知问题还是我做错了什么?

  • 基本上我想要视频盗版保护 我的应用程序有视频流,我想保护我的视频流免受其他应用程序的影响。其他应用程序应该不能捕捉屏幕,而我的视频正在播放。任何建议我如何实现这一点…提前谢了。