如何使用C#.Net将屏幕捕获为视频?

时间:2011-07-06 06:52:19

标签: c# screen-capture desktop-recording

我知道有很多这样的问题。

但我不想使用Windows媒体编码器9,因为获取一个是一个问题,然后它就不再受支持了。

我知道,一种可能性是捕获大量屏幕截图并使用ffmpeg制作视频,但我不想使用第三方可执行文件。

是否只有.net解决方案?

2 个答案:

答案 0 :(得分:9)

答案是Microsoft Expression Encoder。根据我的观点,在Vista和Windows 7上录制内容的最简单方法

private void CaptureMoni()
        {

            try
            {
                Rectangle _screenRectangle = Screen.PrimaryScreen.Bounds;
                _screenCaptureJob = new ScreenCaptureJob();
                _screenCaptureJob.CaptureRectangle = _screenRectangle;
                _screenCaptureJob.ShowFlashingBoundary = true;
                _screenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 20;
                _screenCaptureJob.CaptureMouseCursor = true;

                _screenCaptureJob.OutputScreenCaptureFileName = string.Format(@"C:\test.wmv");
                if (File.Exists(_screenCaptureJob.OutputScreenCaptureFileName))
                {
                    File.Delete(_screenCaptureJob.OutputScreenCaptureFileName);
                }
                _screenCaptureJob.Start();
            }
            catch(Exception e) { }
        }

答案 1 :(得分:3)

根据评论反馈进行修改:

名为baSSiLL的开发人员慷慨地共享了一个存储库,该存储库具有屏幕录制c#库以及c#中的示例项目,显示如何使用它来捕获屏幕和麦克风。

使用示例代码开始捕获屏幕就像以下一样:

recorder = new Recorder(_filePath,
            KnownFourCCs.Codecs.X264, quality,
            0, SupportedWaveFormat.WAVE_FORMAT_44S16, true, 160);

_filePath是我要将视频保存到的文件的路径。

你可以传入各种编解码器,包括AVI,MotionJPEG,X264等。在x264的情况下,我必须首先在我的机器上安装编解码器,但AVI开箱即用。

质量仅在使用AVI或MotionJPEG时发挥作用。 x264编解码器管理自己的质量设置。

上面的0是我想要使用的音频设备。默认值为零。

它目前支持2种波形。 44100,16位,立体声或单声道。

true参数表示我希望音频编码为mp3格式。我相信在选择x264时需要这样做,因为.mp4文件中的未压缩音频不能为我播放。

160是对音频进行编码的比特率。

~~~~~

要停止录制,只需

recorder.Dispose(); recorder = null;

所有内容都是开源的,因此您可以编辑刻录机类并更改尺寸,每秒帧数等。

~~~~

要启动并运行此库,您需要从下面的github / codeplex库中下载或提取。您也可以使用NuGet:

Install-Package SharpAvi

原帖:

夏普AVI: https://sharpavi.codeplex.com/ 要么 https://github.com/baSSiLL/SharpAvi

该库中有一个示例项目,其中包含一个很棒的屏幕录像机以及一个用于设置/等的菜单。

我首先从StackoverFlow问题的另一个答案中找到了Screna,但我遇到了一些涉及让Mp3 Lame编码器正常工作的问题。 Screna是SharpAVI的包装器。我发现通过删除Screna并取消SharpAvi的样本我运气更好。