c# 桌面录屏,生成视频方案总结

目录介绍

  • C#录屏思路
  • 常用实现方法
  • OpencvSharp录屏介绍

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

你可能感兴趣的:(c#,c#,音视频,opencv)