Windows 像GotoMeeting这样的软件是如何捕捉桌面图像的?

Windows 像GotoMeeting这样的软件是如何捕捉桌面图像的?,windows,video,screen,capture,Windows,Video,Screen,Capture,我想知道像GotoMeeting这样的软件是如何捕获桌面的。我可以使用GDI进行全屏(或逐块)捕获,但这对我来说太浪费了。我也研究过镜像设备,但我想知道是否有一种更简单的技术或库可以做到这一点 我需要快速高效的桌面屏幕捕获(10p15 fps),我最终会将其转换为视频文件,并与我的应用程序集成,通过网络或其他方式发送捕获的提要 谢谢 什么语言 .NET提供 我会: 进行全屏截图,然后 执行图像处理以隔离 屏幕上已更改的部分 以节省带宽 -或- 使用类似的程序 是的,拍摄屏幕截图并找出前一次

我想知道像GotoMeeting这样的软件是如何捕获桌面的。我可以使用GDI进行全屏(或逐块)捕获,但这对我来说太浪费了。我也研究过镜像设备,但我想知道是否有一种更简单的技术或库可以做到这一点

我需要快速高效的桌面屏幕捕获(10p15 fps),我最终会将其转换为视频文件,并与我的应用程序集成,通过网络或其他方式发送捕获的提要

谢谢

什么语言

.NET提供

我会:

  • 进行全屏截图,然后 执行图像处理以隔离 屏幕上已更改的部分 以节省带宽
-或-

  • 使用类似的程序

是的,拍摄屏幕截图并找出前一次截图之间的差异是减少传输带宽的一个好方法,方法是只发送更改,当然这类似于逐块执行此操作的视频编码技术


仍然意味着您需要执行捕获和额外处理以获得差异,即对其进行编码。

使用镜像设备,您可以获得更改的更新矩形和指向屏幕的指针。更新的矩形指针指向所有更改的矩形,这些矩形是经常更改的更改矩形。过滤掉一些矩形,因为在一秒钟内你可以得到1000个矩形

我使用内存驱动程序每秒获得20到30帧,我在图片框上显示,但当我得到全屏更新时,这些帧被缓冲。由于图片框很慢,并且我自己的组件有变化,这是一些速度有多快,但在全屏上不好,以及我在全屏上平均显示10 fps。我在渲染帧时遇到问题,我可以每秒捕获20到30帧,但我的渲染是每秒8到10个全屏帧。如果有人在全屏显示了achive渲染帧,请重播我。

好吧,我想要一个与语言无关的答案,更像是对技术的讨论,而不是API调用。CopyFromScreen将进行一点一点的传输,就像我提到的,这对我来说是一种浪费。在功能不太强大的笔记本电脑上每秒执行此操作10-15次,可能会使其引人注目,或者耗尽笔记本电脑的电池,或者两者兼而有之。所以需要更有效的方法。如果有更有效的方法,你不认为核心.NET库会使用它吗?如果你想要一种“更高效”的方式,那就需要不捕获屏幕本身。我不是说.NET CopyFromScreen调用没有效率,我只是说对于我的具体案例,我认为它是浪费。我不想捕捉整个屏幕,只是想知道屏幕根本没有改变。你可以做一个优化,看看自从上次屏幕截图以来是否有任何鼠标移动或键盘事件。如果没有,那就不要再抓捕了。但这对任何不考虑输入而自动更新的窗口都没有帮助,例如动画、视频等。全屏图像处理,嗯。。我总是将图像分割成块并寻找delta,但我想我并没有真正将其视为图像处理。这意味着我可以使用可编程GPU来减轻CPU的一些负载,并进行快速增量检测。令人惊叹的。