【发布时间】:2011-01-03 22:54:30
【问题描述】:
我想知道像 GotoMeeting 这样的软件如何捕获桌面。我可以使用 GDI 进行全屏(或逐块)捕获,但这对我来说似乎太浪费了。我也研究了镜像设备,但我想知道是否有更简单的技术或库可以做到这一点。
我需要快速高效的桌面屏幕捕获 (10p15 fps),我最终会将其转换为视频文件并与我的应用程序集成以通过网络或其他方式发送捕获的提要。
谢谢!
【问题讨论】:
标签: windows video screen capture
我想知道像 GotoMeeting 这样的软件如何捕获桌面。我可以使用 GDI 进行全屏(或逐块)捕获,但这对我来说似乎太浪费了。我也研究了镜像设备,但我想知道是否有更简单的技术或库可以做到这一点。
我需要快速高效的桌面屏幕捕获 (10p15 fps),我最终会将其转换为视频文件并与我的应用程序集成以通过网络或其他方式发送捕获的提要。
谢谢!
【问题讨论】:
标签: windows video screen capture
是的,截屏并找出前一次截屏之间的差异是一种减少传输带宽的好方法,只需发送更改即可,当然这类似于逐块执行此操作的视频编码技术。
仍然意味着您需要进行捕获和额外处理以获得差异,即对其进行编码。
【讨论】:
通过使用 Mirror 设备,您可以获得更新的 Rectangle 以及指向屏幕的指针。更新后的 Rectangle 指针指向所有变化的矩形,这些矩形就是变化频繁的矩形。过滤掉一些矩形,因为在一秒钟内您可以获得 1000 个矩形。
【讨论】:
【讨论】:
我使用内存驱动程序每秒获得 20 到 30 帧,我显示在我的图片框上,但是当我获得全屏更新时,这些帧被缓冲。由于图片框很慢并且已经更改了我自己的组件,这有点快,但在全屏时并不好,平均我在全屏时显示 10 fps。我在渲染帧时遇到问题,我每秒可以捕获 20 到 30 帧,但我的渲染是在一秒钟内 8 到 10 个全屏帧。如果有人有全屏渲染帧,请重播我。
【讨论】:
什么语言?
.NET 提供Graphics.CopyFromScreen。
【讨论】: