一尘不染

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

linux

但适用于linux / X11。

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

注意事项和要求:

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

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

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

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

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

欢迎提出建议和想法


阅读 313

收藏
2020-06-03

共1个答案

一尘不染

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

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

这将具有以下优点:

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

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

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

4)利润!

2020-06-03