C#调用AForge实现摄像头录像的示例代码

发布时间 - 2026-01-11 03:20:59    点击率:

1:首先下载库文件>>

也可以去官网寻找>>

下载本教程全代码>>

输出为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#调用usb摄像头的实现方法  # C# WPF使用AForge类库操作USB摄像头拍照并保存  # C#实现调用本机摄像头实例  # C#实现控制摄像头的类  # C#使用Aforge调用摄像头拍照的方法  # C#结合AForge实现摄像头录像  # C#开发可播放摄像头及任意格式视频的播放器  # c#基于opencv  # 开发摄像头播放程序  # C# 利用AForge实现摄像头信息采集  # C#调用USB摄像头的方法  # 回调  # 选了  # 官网  # 也会  # 在这个  # 将会  # 如果没有  # 写到  # 带了  # 这里面  # 视频文件  # 大家多多  # 清空  # 无法播放  # 比特率  # 全局变量  # VideoCapabilities  # 帧率  # Camera_NewFrame  # Height 


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


相关推荐: Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel怎么使用artisan命令缓存配置和视图  Windows Hello人脸识别突然无法使用  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  浅谈redis在项目中的应用  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何在景安服务器上快速搭建个人网站?  Laravel如何升级到最新版本?(升级指南和步骤)  JS实现鼠标移上去显示图片或微信二维码  微信小程序 scroll-view组件实现列表页实例代码  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  制作电商网页,电商供应链怎么做?  Java类加载基本过程详细介绍  北京专业网站制作设计师招聘,北京白云观官方网站?  香港服务器部署网站为何提示未备案?  做企业网站制作流程,企业网站制作基本流程有哪些?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  公司门户网站制作流程,华为官网怎么做?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  EditPlus中的正则表达式 实战(2)  太平洋网站制作公司,网络用语太平洋是什么意思?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  用v-html解决Vue.js渲染中html标签不被解析的问题  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Python3.6正式版新特性预览  创业网站制作流程,创业网站可靠吗?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  大型企业网站制作流程,做网站需要注册公司吗?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何在搬瓦工VPS快速搭建网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何安全更换建站之星模板并保留数据?