C#录屏思路
录屏主要有摄像头录制,采集卡录制,桌面录制,麦克风录制,声卡录制等常用业务需求,主要开发思路
1.通过一定帧频截图采集
2.截图图片数据放入缓存
3.通过缓存图像数据压缩,编码后生成对应的视频文件
自行开发上面的流程复杂,可借助相关的组件来实现结果,如ffmpeg,opencv,及第三方公司组件
ScnLib,Oraycn.MCapture,SharpCapture
常用实现方法
- 基于Accord(AForge)自行开发,思路就是以一定时间间隔捕获屏幕,再利用Accord实现高效的视频编码,压缩保存等;
- 基于FFmpeg.AutoGen开发,可以看做是FFmpeg的C#版吧, Net Framework4.5以上兼容性不好啊,原作者貌似也没解决这个问题,总之就是没研究明白,还浪费了不少时间,先放弃了。
- 基于OpencvSharp,原理与Accord类似,自己实现录屏的捕获桌面、编码等全过程,我一直用此类库,效率和速度还不错,Opencv值得信赖,推荐使用。
- 基于ScnLib,这家公司开发的录屏SDK,有各种语言实现的版本,能试用(有水印),东西好是真的好,但是也真贵啊,本着程序员自给自足的精神,花钱买它真是羞耻。(土豪忽略)
- 基本Oraycn.MCapture,这个也是家公司开发的录屏sdk,还有相关的压缩保存的组件及电子会议课堂用的白板,音视频录制,直播等SDK,经测试可以很方便使用来实现自已的业务。缺点就是贵,测试版没有水印,主要限制录屏和保存视频的时间。
- 基于SharpCapture,SharpCapture是一款音视频数据采集类库。它完全采用C#语言开发,基于DirectShow技术实现摄像头帧画面采集、屏幕录制、声卡采集、麦克风采集、混音等诸多强大功能为一体,且不依赖任何其他第三方组件。通过调用它,您可以快速实现摄像头画面的采集,系统屏幕的录制,采集计算机声卡以及麦克风声音,并且可以对声卡的声音和麦克风的声音进行混音。可以应用到直播、录屏、电脑录音、远程教学、视频聊天等业务场景。
- 基于FFmpeg.exe,c#程序后台调用这个进程,实现录屏,实际上就是借用FFmpeg.exe来实现录屏,这个方法简单,通过命令行一步实现录屏,解码,压缩功能。很方便快捷 ,推荐使用哦!
OpencvSharp录屏介绍
获取桌面屏幕图片
private Bitmap GetScreenImgByteArray()
{
Bitmap bitmap = new Bitmap(_bounds.Width, _bounds.Height, PixelFormat.Format24bppRgb);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen(Point.Empty, Point.Empty, _bounds.Size, CopyPixelOperation.SourceCopy);
return bitmap;
}
}
OpencvSharp主要方法介绍
_videoWriter=new VideoWriter(path, new FourCC(FourCC.XVID), _fps, new OcvSize(_bounds.Width, _bounds.Height));
path:参数1表示读取的视频帧所存放的新的文件
FourCC: 参数2指的是视频存放的编码格式,
fps: 参数3表示每秒的帧数
size:参数4表示图像的长宽大小
FoutCC格式
| FoutCC.MP42; | FoutCC.IYUV; |
| FoutCC.MJPG; | FoutCC.M4S2; |
| FoutCC.lX264; | FoutCC.MP43; |
| FoutCC.MP4S; | FoutCC.MP4V; |
| FoutCC.MPG1; | FoutCC.MPG2; |
| FoutCC.MPG4; | FoutCC.MSS1; |
| FoutCC.MSS2; | FoutCC.MSVC; |
| FoutCC.JPEG; | FoutCC.PIM1; |
| FoutCC.WMV1; | FoutCC.WMV2; |
| FoutCC.WMV3; | FoutCC.IYUB; |
| FoutCC.IV50; | FoutCC.IV41; |
| FoutCC.IV32; | FoutCC.AVC; |
| FoutCC.CVID; | FoutCC.DIB; |
| FoutCC.DIV3; | FoutCC.DIVX; |
| FoutCC.DV25; | FoutCC.DVC; |
| FoutCC.WVC1; | FoutCC.DVH1; |
| FoutCC.DVSD; | FoutCC.DVSL; |
| FoutCC.H261; | FoutCC.H263; |
| FoutCC.H264; | FoutCC.H265; |
| FoutCC.HEVC; | FoutCC.I420; |
| FoutCC.DVHD; | FoutCC.XVID; |
OpencvSharp写入视频文件
Bitmap img=GetScreenImgByteArray();
using (Mat mat = BitmapConverter.ToMat(img))
{
//转成Mat,
using (InputArray input = InputArray.Create(mat))
{
lock (_videoWriteingLock)
{
_videoWriter?.Write(input);
}
}
}
代码示例如下链接
https://download.csdn.net/download/qq_41230604/86504963?spm=1001.2014.3001.5501

1248

被折叠的 条评论
为什么被折叠?



