如何使用c# . net捕获屏幕为视频
本文关键字:屏幕 视频 何使用 net | 更新日期: 2023-09-27 18:01:23
我知道有很多这样的问题。
但是我不想使用Windows媒体编码器9,因为它是一个问题,然后它不再被支持。
我知道,一种可能性是捕获大量的截图和创建一个视频与ffmpeg
,但我不想使用第三方可执行文件。
是否存在仅.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的样本,我的运气更好。