我知道有很多这样的问题。
但我不想使用Windows媒体编码器9,因为获取一个是一个问题,然后它就不再受支持了。
我知道,一种可能性是捕获大量屏幕截图并使用ffmpeg
制作视频,但我不想使用第三方可执行文件。
是否只有.net
解决方案?
答案 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的样本我运气更好。