C#调用AForge实现摄像头录像

1:

首先下载库文件>>

也可以去官网寻找>>

下载本教程全代码>>

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

2:

添加这些引用:

3:

两个全局变量:

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

开始代码:

 1 //获取摄像头列表
 2 var devs = new FilterInfoCollection(FilterCategory.VideoInputDevice);
 3
 4 //实例化设备控制类(我选了第1个)
 5 Camera = new VideoCaptureDevice(devs[0].MonikerString);
 6
 7 //配置录像参数(宽,高,帧率,比特率等参数)VideoCapabilities这个属性会返回摄像头支持哪些配置,从这里面选一个赋值接即可,我选了第1个
 8 Camera.VideoResolution = Camera.VideoCapabilities[0];
 9
10 //设置回调,aforge会不断从这个回调推出图像数据
11 Camera.NewFrame += Camera_NewFrame;
12
13 //打开摄像头
14 Camera.Start();
15
16 //打开录像文件(如果没有则创建,如果有也会清空),这里还有关于
17 VideoOutPut.Open("E:/VIDEO.MP4",     Camera.VideoResolution.FrameSize.Width,     Camera.VideoResolution.FrameSize.Height,     Camera.VideoResolution.AverageFrameRate,     VideoCodec.MPEG4,     Camera.VideoResolution.BitCount);
给AForge输出图像数据的回调方法:
 1 //图像缓存
 2 private Bitmap bmp = new Bitmap(1, 1);
 3
 4 //摄像头输出回调
 5 private void Camera_NewFrame(object sender, NewFrameEventArgs eventArgs)
 6 {
 7     //写到文件
 8     VideoOutPut.WriteVideoFrame(eventArgs.Frame);
 9     lock (bmp)
10     {
11         //释放上一个缓存
12         bmp.Dispose();
13         //保存一份缓存
14         bmp = eventArgs.Frame.Clone() as Bitmap;
15     }
16 }

结束代码:

            //停摄像头
            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>

不然会这样:

时间: 2024-10-05 04:58:33

C#调用AForge实现摄像头录像的相关文章

C#调用本机摄像头

原文:C#调用本机摄像头 这段时间一个小项目中需要调用本机的摄像头进行拍照,网上搜集了一些资料以及解决的一些小问题,在此记录以便后续使用. 硬件环境:联想C360一体机,自带摄像头 编写环境:vs2010 语言:C# WPF 下载AForge类库,并添加引用: using AForge; using AForge.Controls; using AForge.Video; using AForge.Video.DirectShow; using Size = System.Drawing.Siz

C#实现调用本机摄像头实例

本文实例源自一个项目,其中需要调用本机的摄像头进行拍照,分享给大家供大家参考之用.具体步骤如下: 硬件环境:联想C360一体机,自带摄像头 编写环境:vs2010 语言:C# WPF 实现步骤: 下载AForge类库,并添加引用: using AForge; using AForge.Controls; using AForge.Video; using AForge.Video.DirectShow; using Size = System.Drawing.Size; 在xaml界面中添加Vi

C# 调用AForge类库操作摄像头

如有雷同,不胜荣幸,若转载,请注明 最近做项目需要操作摄像头,在网上百度了很多资料,很多都是C#调用window API 发送SendMessage,实现操作摄像头,但是C#调用window API的时候因为驱动的问题,总是弹出视频选择对话框,让人很是无语,看到大牛们有的截获到了window消息,然后模拟点击确定按钮,这是在是不敢恭维啊,还有的大牛根据API原型重写了,至于我是一只IT小小鸟了,然后在继续百度,找到了一个AForge强大的C#类库,最后终于搞定了,接下来将我拙劣的代码部分贴出来,

html5调用本机摄像头兼容谷歌浏览器高版本,谷歌浏览器低版本,火狐浏览器

做这个功能的时候在网上查了一些资料,代码如下,在这个代码在谷歌浏览器46版本是没问题的,在火狐浏览器也行,但是在谷歌浏览器高版本下是不兼容的 <div id="body"> <section class="featured"> <div class="content-wrapper"> <hgroup class="title"> <h1>Welcome to web

win8 metro 自己写摄像头录像项目

这是要求不适用CameraCaptureUI等使用系统自带的 camera  UI界面.要求我们自己写调用摄像头摄像的方法,如今我把我的程序贴下: UI界面的程序: <Page x:Class="Camera3.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2

WPF另类实现摄像头录像

WPF中使用第三方控件来直接进行录像的控件没有找到(aforgenet好像不维护了?WPFMediaKit好像只能实现摄像头拍照.收费的控件没有使用,不做评论.) 通过百度(感谢:https://www.cnblogs.com/giserlong88/p/11244779.html),确定了可以通过FFmpeg+Nginx+Vlc.DotNet.Wpf可以实现摄像头的录像保存.录像预览(有延时),实现方案是,通过FFmpeg来实现录像并推送到Nginx搭建的rtmp流媒体服务器,然后WPF通过V

python+opencv 电脑调用手机的摄像头

移动端下载一个工具:IP摄像头(app) Android的下载地址:http://app.mi.com/details?id=com.shenyaocn.android.WebCam 下载安装后,打开app后,点击下方的"打开IP摄像头服务器"(连上wifi,确保电脑与手机处在同一局域网内). 然后,使用python进行opencv代码调用部分: import cv2 cv2.namedWindow("camera",1) #开启ip摄像头 video="

DirectShowNet 使用摄像头录像+录音

http://www.cnblogs.com/endv/p/6052511.html 1 // ------------------------------------------------------------------ 2 // CaptureTest.cs 3 // Sample application to show the DirectX.Capture class library. 4 // 5 // History: 6 // 2003-Jan-25 BL - created

使用摄像头录像后,需要删除系统缓存数据!

当我使用UIImagePickerController,录像 完成后,使用 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 保存需要的数据,数据的链接或者数据都放在字典info里面,也就是说,info保存着系统为你保存好的原始录像路径. 那么当我保存自己要得东西后,退出后,这些原始数据怎么办?是否自动删除?答案是否定的