【问题标题】:Recording video of only one Window只录制一个窗口的视频
【发布时间】:2012-10-25 20:59:11
【问题描述】:

我需要将我的屏幕捕获为视频,为此我使用了 Expression Encoder 4,但在我的应用程序中我还需要捕获一个窗口,但我无法找到一种方法,我尝试使用 EE4动态更改我的ScreenCaptureJobCaptureRectangle,但这似乎是不可能的。所以我的问题是,您是否知道最好使用 C# 或 C++ 来执行此“单窗口捕获”?

【问题讨论】:

    标签: c# screen-capture


    【解决方案1】:

    可以获取您感兴趣的窗口的窗口句柄,设置一个计时器,并在每个计时器滴答声中捕获该窗口的内容。这样做并非易事,但肯定是可能的。多年前我用 C 语言做过,但那段代码早已不复存在。

    如果您只想捕获屏幕的矩形区域,问题会更简单。您可以获取窗口句柄,查询其大小和位置,然后从屏幕上复制该区域。在 C 或 C++ 中,您将获得桌面 DC 并从中复制位。在 C# 中,您可以创建一个窗口大小的Bitmap,调用Graphics.FromImage 来获取图像的Graphics 对象,然后调用CopyFromScreen 来获取窗口内容。缺点是只有在没有任何东西覆盖有问题的窗口时才有效。如果有东西覆盖了窗口的任何部分,你就会捕捉到它。

    无论如何,您最终都会得到需要组合成视频的图像流。有许多图书馆可以做到这一点。对于 C# 解决方案,您可以从查看 create video from streamed images c# 开始。我怀疑有类似的 C++ 库。还有一些命令行工具可以做到这一点,尽管我对它们的体验并不令人满意。

    【讨论】:

    • 这种技术正是我在尝试使用编码器之前要做的,我唯一担心的是性能,但在玩过 DirectX 之后,我发现这可能不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 2018-04-12
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多