当前位置: 首页 > 面试题库 >

在Linux上最快的屏幕捕获方法

成浩漫
2023-03-14
问题内容

但适用于linux / X11。

更具体地说,我需要一种方法来捕获在X11 diplay上运行的一个窗口(窗口中alt-print屏幕的程序等效)的像素图像。

注意事项和要求:

1)即使将新窗口放置在正在捕获的窗口之上,像素图像也应始终指向原始应用程序窗口,而不会发生任何遮挡

2)不需要用户看到应用程序窗口,我只需要存储用于视频目的的像素缓冲区/图像

我探索过的其他替代方法是:

1)xvfb-它可以工作,但是可以进行CPU渲染,这很慢并且浪费了一个好的GPU

2)许多lxc内的x11-理论上可以工作,但是设置起来很复杂,我不确定在捕获许多窗口的情况下它能否很好地缩放

欢迎提出建议和想法


问题答案:

在具有硬件加速功能的服务器中使用VirtualGL可以做到这一点。基本上,只需适当地配置服务器,然后在同一台计算机上或在同一网络中的计算机上运行

export DISPLAY=<your xvfb display>
vglrun <your_app>

这将具有以下优点:

1)您的应用将使用virtualGL进行渲染,而virtualGL将使用硬件

2)VirtualGL将在Xfvb显示屏内显示您的3D上下文,它将仅在CPU中渲染2D小部件

3)配置Xvfb渲染到帧缓冲区

4)利润!



 类似资料:
  • 问题内容: 我们正在考虑用Java编写一种软件,该软件可以在运行期间记录监控什么内容。您对如何有效捕获监视器输出有任何建议吗? 占用的CPU越少,我们捕获屏幕的频率就越高,并且在不干扰其他正在运行的应用程序的情况下,生成的视频越流畅。 如果复制屏幕捕获部分不太困难,则Java中的现有开放源代码程序将起作用。我希望它不需要调用另一种编程语言。我们会看到。 问题答案: 我不确定是否需要框架。 请查阅该

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

  • 问题内容: 我需要以某种方式捕获屏幕(作为打印屏幕),以便可以访问像素颜色数据,以进行一些图像识别,此后,我将需要在屏幕上生成鼠标事件,例如左键单击,拖放(移动鼠标)同时按下按钮,然后释放它)。完成后,图像将被删除。 注意:我需要捕获整个屏幕,用户可以看到所有内容,并且需要模拟程序窗口外的点击(如果有任何不同) 规格:Linux ubuntu语言:C ++ 性能不是很重要,“打印屏幕”功能将每隔1

  • 问题内容: 在Windows上截图的最快方法是什么?是相当慢的..花费4-5秒钟才能获得同一小窗口的30个屏幕截图。拍摄整个桌面的屏幕截图甚至更慢。 问题答案: 您可以直接使用win32 API。 1)首先将焦点放在您要为其截屏的应用程序上。连结文字 “焦点问题在另一个问题中处理”) 2)Win32 API可以帮助截图:

  • 本文向大家介绍java获取鼠标在屏幕上坐标的方法,包括了java获取鼠标在屏幕上坐标的方法的使用技巧和注意事项,需要的朋友参考一下 介绍 java作为目前最为流行的计算机开发语言之一,学习java是高薪就业的好选择,本文介绍的这个小工具主要是使用MouseInfo类实时获取鼠标的信息,然后再JDialog上显示出来。希望下面的内容介绍,能够让大家对于如何获取鼠标在屏幕上的坐标更加了解,一起来学习下

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