C#录制视频
这是一个使用C#语言制作的录制框架(基于AForge),支持录制桌面,多屏,声音,摄像头,某个应用程序的界面
1.安装
使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索
或者使用Nuget命令
Install-Package Kogel.Record
安装完成包后会出现一个DLL文件夹,里面会有一些依赖的DLL
选中全部后右击-属性,设置复制到输出目录-始终复制
2.定义
需要在应用程序的主入口点初始化下全局配置
//初始化DLL配置 Global.InitDllPath();
还需要在App.config中设置兼容.NetFramework2.0
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> <supportedRuntime version="v2.0.50727"/> </startup>
3.录制桌面
使用ScreenRecorder类
首先创建桌面录制类对象
//视频存放路径 string recorderPath = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.ToString("MMddHHmmss") + ".avi"; //初始化录制器 (第一个参数是路径,第二个参数是帧数,第三个参数是是否录制声音) var recorder = new ScreenRecorder(recorderPath, 10, true);
还可以设置画质(第四个参数)Raw为原画画质,建议不要使用(一分钟几个G),默认为MSMPEG4v2(高清,标清)
recorder = new ScreenRecorder(recorderPath, 10, true, AForge.Video.FFMPEG.VideoCodec.Raw);
开始录制
//开始并设置每帧回调 recorder.Start(VideoStreamer_NewFrame);
/// <summary> /// 每帧录制帧数回调 /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void VideoStreamer_NewFrame(object sender, NewFrameEventArgs eventArgs) { //显示图片流 this.picScreen.Image = (Bitmap)eventArgs.Frame.Clone(); }
暂停录制
recorder.Pause();
结束录制
recorder.End();
第一次使用此框架VS可能会弹出警告
选中“从以下位置引发时除外”和取消选中“引发此异常类型时中断”,此问题后续就不会再出现
4.Demo示例
此框架还支持录制桌面,多屏,声音,摄像头,某个程序的界面
框架开源,完整Demo可以去Github上下载:
https://github.com/a935368322/Kogel.Record.Test.git
如有问题也可以加QQ群讨论:
技术群 710217654