使用 .NET 技术录制屏幕视频

22

是否有一种使用.NET技术记录桌面或窗口的屏幕的方法?

我的目标是免费的。我喜欢小型、低CPU使用率和简单的想法,但如果它们能创建更好的最终产品,我会考虑其他选项。

简而言之,我知道如何在C#中拍摄屏幕截图,但如何将屏幕或屏幕区域记录为视频呢?

5个回答

19

不需要第三方DLL。这种简单的方法可以将当前屏幕图像捕获到.NET Bitmap对象中。

    private Image CaptureScreen()
    {
        Rectangle screenSize = Screen.PrimaryScreen.Bounds;
        Bitmap target = new Bitmap(screenSize.Width, screenSize.Height);
        using(Graphics g = Graphics.FromImage(target))
        {
            g.CopyFromScreen(0, 0, 0, 0, new Size(screenSize.Width, screenSize.Height));
        }
        return target;
    }

我相信你可以找出如何捕获屏幕的较小部分,如果需要的话 :-).


3
谢谢,抱歉我没有表达清楚,我想录制屏幕视频。 - Chris Craft
3
我考虑过这个选项,只是将位图串在一起。我只是“假设”有一些更“现成”的东西。有点像你不应该自己编写安全API,已经有更好的东西存在。 - Chris Craft
8
为了节省读者一两次搜索,上述代码需要引用System.Windows.FormsSystem.Drawing这两个命名空间。 - TankorSmash
6
这个答案不应该被接受。 - Yoda
1
这个答案现在非常过时,并且与较新的 Windows 框架不兼容(即将 UWP/WinUI 与 WinForms 混合使用)。 - Gabriel Pizarro
显示剩余4条评论

4

您可以使用Windows Media Encoder SDK构建一个C#应用程序来记录屏幕。内置选项可记录整个桌面、特定窗口或屏幕的一部分。


2

有一个DLL文件可以完成这个功能。我不记得它的名字,但它被Jing使用。我的一个朋友仅用几分钟就利用那个DLL文件实现了一个屏幕录制器,只是为了测试。查看Jing,你可能会找到他们使用的DLL文件。


我正在尝试检查jing项目。我得到的印象是jing有一个你可以录制的持续时间限制。也许这个限制是内置在你所说的dll中的。此外,它可能不属于gpl/lgpl,因此严格来说可能不是“免费”的。 - Kinjal Dixit
在 Jing 许可协议中:组件分离 - [...] 其组成部分不得分离以供使用 [...].我的建议:保持安全。尝试在 Google 上搜索:c# 屏幕截图。 - Kinjal Dixit
1
只是确保每个人都明白目标是记录屏幕视频,而不是简单的位图屏幕截图。 - Chris Craft
我对那个dll的许可协议一无所知。它可能不是开源的,甚至不是免费的。但它可以录制屏幕视频。 - PEZ
我使用了 Jing,效果非常好。但它只能在 .net 4 或 3 上运行。我想要它适用于 .net 2。 - Matin Lotfaliee

0

您可以使用Media Encoder SDK,但它不支持Windows 7。


-2
你可以尝试这个开源工具:ScreenRecord 它基于AForge.NET。

3
只应将仅包含链接的回答发布为评论。无论如何,如果某天链接更改,您的答案将变得无效。在答案中至少提到实用程序的名称,以便即使链接失效,也可以搜索到它。 - NSNoob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接