C#结合AForge实现摄像头录像

发布时间 - 2026-01-11 03:23:36    点击率:

输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:

2:

添加这些引用:

3:

两个全局变量:

//用来操作摄像头
 private VideoCaptureDevice Camera = null;
 //用来把每一帧图像编码到视频文件
 private VideoFileWriter VideoOutPut = new VideoFileWriter();

开始代码:

//获取摄像头列表
var devs = new FilterInfoCollection(FilterCategory.VideoInputDevice);

//实例化设备控制类(我选了第1个)
Camera = new VideoCaptureDevice(devs[0].MonikerString);

//配置录像参数(宽,高,帧率,比特率等参数)VideoCapabilities这个属性会返回摄像头支持哪些配置,从这里面选一个赋值接即可,我选了第1个
Camera.VideoResolution = Camera.VideoCapabilities[0];

//设置回调,aforge会不断从这个回调推出图像数据
Camera.NewFrame += Camera_NewFrame;

//打开摄像头
Camera.Start();

//打开录像文件(如果没有则创建,如果有也会清空),这里还有关于
VideoOutPut.Open("E:/VIDEO.MP4", 
    Camera.VideoResolution.FrameSize.Width, 
    Camera.VideoResolution.FrameSize.Height, 
    Camera.VideoResolution.AverageFrameRate, 
    VideoCodec.MPEG4, 
    Camera.VideoResolution.BitCount);
给AForge输出图像数据的回调方法:
//图像缓存
private Bitmap bmp = new Bitmap(1, 1);

//摄像头输出回调
private void Camera_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
  //写到文件
  VideoOutPut.WriteVideoFrame(eventArgs.Frame);
  lock (bmp)
  {
    //释放上一个缓存
    bmp.Dispose();
    //保存一份缓存
    bmp = eventArgs.Frame.Clone() as Bitmap;
  }
}

结束代码:

      //停摄像头
      Camera.Stop();

      //关闭录像文件,如果忘了不关闭,将会得到一个损坏的文件,无法播放
      VideoOutPut.Close();

4:

修改App.config,兼容net2.0的一些东西:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
 </startup>
 <supportedRuntime version="v2.0.50727"/>
</configuration>


# C#操作摄像头  # C#  # 调用AForge类库  # 基于AForge的C#摄像头视频录制  # C#调用usb摄像头的实现方法  # C# WPF使用AForge类库操作USB摄像头拍照并保存  # C#实现调用本机摄像头实例  # C#调用AForge实现摄像头录像的示例代码  # C#实现控制摄像头的类  # C#使用Aforge调用摄像头拍照的方法  # C#开发可播放摄像头及任意格式视频的播放器  # c#基于opencv  # 开发摄像头播放程序  # C# 利用AForge实现摄像头信息采集  # C#调用USB摄像头的方法  # 回调  # 选了  # 也会  # 在这个  # 将会  # 如果没有  # 写到  # 带了  # 这里面  # 视频文件  # 官网  # 清空  # 无法播放  # 比特率  # 全局变量  # Height  # VideoResolution  # VideoCapabilities  # Start  # VIDEO 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何为API编写文档_Laravel API文档生成与维护方法  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  昵图网官网入口 昵图网素材平台官方入口  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel如何创建自定义Artisan命令?(代码示例)  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  java中使用zxing批量生成二维码立牌  如何用花生壳三步快速搭建专属网站?  jquery插件bootstrapValidator表单验证详解  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  PHP 500报错的快速解决方法  如何用已有域名快速搭建网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何正确选择百度移动适配建站域名?  JavaScript如何实现倒计时_时间函数如何精确控制  Swift中循环语句中的转移语句 break 和 continue  网站页面设计需要考虑到这些问题  网站优化排名时,需要考虑哪些问题呢?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Android中AutoCompleteTextView自动提示  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  音乐网站服务器如何优化API响应速度?  深圳网站制作的公司有哪些,dido官方网站?  bing浏览器学术搜索入口_bing学术文献检索地址  linux top下的 minerd 木马清除方法  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel distinct去重查询_Laravel Eloquent去重方法  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  如何快速搭建高效服务器建站系统?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何用PHP工具快速搭建高效网站?  利用python获取某年中每个月的第一天和最后一天  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  浅谈Javascript中的Label语句  简单实现Android验证码