如何使用c# . net捕获屏幕为视频

本文关键字:屏幕 视频 何使用 net | 更新日期: 2023-09-27 18:01:23

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

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

我知道,一种可能性是捕获大量的截图和创建一个视频与ffmpeg,但我不想使用第三方可执行文件。

是否存在仅.net的解?

如何使用c# . net捕获屏幕为视频

答案是Microsoft表达式编码器。在我看来,这是在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) { }
        }

基于评论反馈编辑:

一个名为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是我想使用的音频设备。默认为0。

目前支持2波格式。44100在16位立体声或单声道。

true参数表示我希望将音频编码为mp3格式。我相信当选择x264时,这是必需的,因为未压缩的音频组合在。mp4文件中不会为我播放。

160是音频编码的比特率。

~ ~ ~ ~ ~

要停止录制,只需

recorder.Dispose(); recorder = null;

一切都是开源的,所以你可以编辑记录器类和改变尺寸,帧每秒等。

~ ~ ~ ~

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

安装包SharpAvi

原始文章:

锋利的AVI:https://sharpavi.codeplex.com/或https://github.com/baSSiLL/SharpAvi

在该库中有一个示例项目,其中有一个很棒的屏幕记录器以及设置/等菜单。

我首先从这个StackoverFlow问题的另一个答案中找到了screena,但我遇到了一些问题,包括让Mp3 Lame编码器正确工作。screena是SharpAVI的包装器。我发现通过移除screa并离开SharpAvi的样本,我的运气更好。