.NET 代码记录特定表单活动 + 音频到 avi

Posted

技术标签:

【中文标题】.NET 代码记录特定表单活动 + 音频到 avi【英文标题】:.NET code to record a specific form activity + audio to avi 【发布时间】:2009-12-19 23:25:34 【问题描述】:

我正在寻找一些 C# 代码 .. 或 .NET 组件来记录我的屏幕(不是整个桌面)上的表单活动以及音频,类似于 Camtasia 等程序允许执行的操作。

【问题讨论】:

【参考方案1】:

视频部分其实很简单。您所需要的只是一个每秒运行 20 次的计时器,它将表单的画布作为框架保存到图像文件中。然后用这些图片制作动画。

要捕获图像:

public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();
        tVideo.Start();
    

    int i = 0;

    private void tVideo_Tick(object sender, EventArgs e)
    
        String lFile = String.Format("c:\\0.bmp", i);
        SaveAsBitmap(this, lFile);

        i++;
    

    public void SaveAsBitmap(Control aCtrl, string aFileName)
    
        if (File.Exists(aFileName))
            File.Delete(aFileName);

        Graphics lGraphics = aCtrl.CreateGraphics();

        Bitmap lImage = new Bitmap(aCtrl.Width, aCtrl.Height);

        aCtrl.DrawToBitmap(lImage, new Rectangle(0, 0, aCtrl.Width, aCtrl.Height));

        lImage.Save(aFileName);
        lImage.Dispose();
    

这只是一个简单的示例,当然您必须添加一些压缩并尽量避免将同一图像保存两次。知道有多少图像是相同的 + 知道帧率,您就知道显示同一帧需要多长时间。

要添加光标,您必须使用鼠标 x,y 和鼠标单击事件保留一些变量。然后将其添加到图片中。

当然,这不适用于 3d 游戏,尽管覆盖是在 win32 绘制之后绘制的。

为此,您必须使用 DirectX/OpenGl/XNA。我认为这个想法是一样的。 对于音频,DirectX 也是如此。

我的完整来源: http://deathsquad.pl/archiwum/Inne/so/answer-1934452.rar

一些 DirectX 音频样本: http://www.codeproject.com/KB/directx/audiosav.aspx

【讨论】:

【参考方案2】:

查看Gallio:这是一个很棒的测试框架,它内置了屏幕录制API。

这篇文章展示了几个例子: http://blog.bits-in-motion.com/2009/09/announcing-gallio-and-mbunit-v31.html

【讨论】:

你能告诉我它的哪个API包含录音功能吗?我找不到确切的 dll 文件。 我测试过了。它不支持屏幕录制音频。

以上是关于.NET 代码记录特定表单活动 + 音频到 avi的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 波形音频和 avi 视频格式合并

ffmpeg转码flv到avi《转》

OpenCV中如何播放avi文件的音频

如何使用 Servlet 流式传输 MP3、MP4、AVI 等音频/视频文件

如何在 Access 中的特定记录处打开表单

如何通过gstreamer将pcap转换为带有视频和音频的avi文件?