使用 Aforge 捕获桌面

Capture desktop with Aforge

我看过各种教程,例如 this,介绍如何从网络摄像头制作、显示和录制视频。 我现在想要的是能够对桌面执行相同的操作,以便我可以将计算机 activity 与外部世界进行交叉引用。 所以我想要的是能够使用 AForge 录制计算机上发生的事情的视频。 我没有找到相关的参考资料,因此无法使用 Aforge 吗?

--添加--

我已经实施了以下建议的解决方案:

谢谢

但是当我看 png 时全是黑色的。 保存过程是正确的,当我保存网络摄像头框架时就可以了。你能告诉我我根据你的代码改编有什么问题吗?

谢谢

它可能不是专业的解决方案,也不是实时的,但它适用于像您这样的简单场景。它是一个使用 Net Framework 4.7.2 构建的控制台应用程序。我使用它的源代码重建了程序集Aforge.Video.FFMPEG,以便它可以与 Net Framework 4.0+ 一起使用。

using AForge.Video.FFMPEG;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

class Program
    {
        static VideoFileWriter VideoFileWriter;
        static Stopwatch stopwatch = new Stopwatch();
        static void Main(string[] args)
        {
            VideoFileWriter = new VideoFileWriter();

            Size screenSize = Screen.PrimaryScreen.Bounds.Size;
            VideoFileWriter.Open("test.mp4", screenSize.Width, screenSize.Height, 30, VideoCodec.MPEG4, 19200000);
            Bitmap bitmap = new Bitmap(screenSize.Width, screenSize.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Graphics g = Graphics.FromImage(bitmap);
            stopwatch.Start();
            while (stopwatch.Elapsed < TimeSpan.FromSeconds(10)) // Record for ten seconds.
            {
                g.CopyFromScreen(0, 0, 0, 0, screenSize, CopyPixelOperation.SourceCopy);
                VideoFileWriter.WriteVideoFrame(bitmap, stopwatch.Elapsed);
                Thread.Sleep(29);
            }
            VideoFileWriter.Close();
            g.Dispose();
        }
    }