AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架。btw... it's an open source framework. 附上官网地址: http://www.aforgenet.com/aforge/framework/ 。

今天要介绍的是AForge中的视频采集功能,这里的视频包括从摄像头等设备的输入和从视频文件的输入。

首先来认识一下 视频源播放器:VideoSourcePlayer,从摄像头和文件输入的视频,都会通过它来播放,并按帧(Frame)来输出Bitmap数据。

VideoSourcePlayer 使用有这么几个重要的步骤:

  • 初始化它,设置 VideoSource 属性。VideoSource 接受 IVideoSource 类型的参数,对应到摄像头输入和文件输入,我们分别会把它设置为 VideoCaptureDevice 和 FileVideoSource。
  • 注册 NewFrame 事件,开始播放。在 NewFrame 注册的事件中处理每一帧的Bitmap。
  • 处理完成后,取消 NewFrame 事件注册,停止它。使用 SignalToStop(); and WaitForStop();

整个使用过程是非常简单的。下面分别来看看摄像头输入和文件输入的代码吧:

1. 摄像头输入

首先是初始化和开始:

// 获取视频输入设备列表
FilterInfoCollection devices = new FilterInfoCollection(FilterCategory.VideoInputDevice); // 获取第一个视频设备(示例代码,未对devices个数为0的情况做处理)
VideoCaptureDevice source = new VideoCaptureDevice(devices[].MonikerString);
// 设置Frame 的 size 和 rate
source.DesiredFrameSize = new Size(, );
source.DesiredFrameRate = ; // 设置VideoSourcePlayer的VideoSource
VideoSourcePlayer videoPlayer = new VideoSourcePlayer();
videoPlayer.VideoSource = source; videoPlayer.NewFrame += videoPlayer_NewFrame; videoPlayer.Start();

这里是NewFrame事件代码:

private void videoPlayer_NewFrame(object sender, ref Bitmap image)
{
// do sth with image
...
}

在使用完成后,停止的代码:

videoPlayer.NewFrame -= videoPlayer_NewFrame;
videoPlayer.SignalToStop();
videoPlayer.WaitForStop();

2. 文件输入

首先是初始化和开始:

// 活体对应视频路径的文件作为视频源
FileVideoSource videoSource = new FileVideoSource(videoFilePath);
videoPlayer.VideoSource = videoSource; videoPlayer.NewFrame += videoPlayer_NewFrame; videoPlayer.Start();

其余两部分代码和摄像头输入是一样的,这里就不重复了。

对于文件输入,还有一点需要注意的,有些机器的codec并不完整,导致FileVideoSource读取某些格式,比如mp4的时候会出现读取错误,这时需要安装一个codec的pack,就可以了。

好了,AForge.NET 的视频采集功能就介绍完了,接下来会再挑一些AForge中有趣的功能来做介绍。

使用 AForge.NET 做视频采集的更多相关文章

  1. 入门视频采集与处理(学会分析YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

  2. 每天进步一点点------入门视频采集与处理(显示YUV数据)

    做视频采集与处理,自然少不了要学会分析YUV数据.因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264.MPEG视频编解码)的角度来说,也是在原始 ...

  3. (三)WebRTC手记之本地视频采集

    转自:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由于篇幅较大 ...

  4. WebRTC手记之本地视频采集

    转载请注明出处:http://www.cnblogs.com/fangkm/p/4374610.html 前面两篇文章介绍WebRTC的运行流程和使用框架接口,接下来就开始分析本地音视频的采集流程.由 ...

  5. Linux之V4L2视频采集编程详解

     V4L2(Video For Linux Two) 是内核提供给应用程序访问音.视频驱动的统一接口. Linux系统中,视频设备被当作一个设备文件来看待,设备文件存放在 /dev目录下,完整路径的设 ...

  6. Delphi XE6 试用Android视频采集

    FMX支持视频采集,具体见FMX.Media,提供了很类支持音频.视频的处理. 按帮助文档,用Note3做了测试,结果,效率太低,不可用. 具体可查询帮助Video Capturing一节,我就是按这 ...

  7. dsp下基于双循环缓冲队列的视频采集和显示记录

    对最近在设计的视频采集和显示缓冲机制做一个记录,以便以后使用. 视频采集和显示缓冲机制,其实是参考了Linux下v4L2的驱动机制,其采用输入多缓冲frame,输出多缓冲的切换机制.简单的就是ping ...

  8. 简单的视频采集demo

    打算做个简单的聊天软件,其中一个我没做过的,就是视频采集. 在网上查了许久资料,终于搞清楚了dshow采集视频的流程 参考资料如下: https://msdn.microsoft.com/en-us/ ...

  9. 用DirectShow实现视频采集-流程构建

    DirectShow作为DirectX的一个子集,它为用户提供了强大.方便的多媒体开接口,并且它拥有直接操作硬件的能力,这使得它的效率远胜于用GDI等图形方式编写的多媒体程序.前面一篇文章已经对Dir ...

随机推荐

  1. Java中前台JSP请求Servlet实例(http+Servlet)

    1.前台jsp代码 himily.jsp,定义了用户名和密码两个输入框,使用post方式提交:/order-web/HimilyServlet其中order-web为站点名称,HimilyServle ...

  2. FZU 1686 神龙的难题 (重复覆盖)

    Problem 1686 神龙的难题 Accept: 397    Submit: 1258Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ...

  3. 当前界面最上面添加视图(UIWimdow)

    -(void)windowAddPushVc:(UIView *)pushView WithTitle:(NSString *)title { UIWindow *window = [UIApplic ...

  4. svn:ignore eclipse开发一般忽略文件

    target.project.classpath.settings

  5. Nginx-->基础-->理论-->002:Nginx进程介绍

    一.Nginx进程介绍

  6. c++父类和子类转化致命的代码错误

    最近在工作中,出现了严重的代码错误,对象的基类和子类的继承,代码大致如下: class A { }; class B : public A { } void main() { A* a;(用于子类对象 ...

  7. 炼数成金(dataguru)IT技能修炼

    2016我定的目标就是要走出舒适区,进入学习区!为了少走弯路,节约学习的成本和时间,我选择了dataguru.看到心仪的课程毫不犹豫的就报了名. 分享了炼数成金邀请码,使用邀请码报名课程可以减免50% ...

  8. brew 任何命令 都 报 synatx error

    brew 忽然不能用了,任何命令都报 syntax error near unexpected token `<<<' 解决方案 cd $(brew --prefix) git fe ...

  9. eclipse中安装adt插件

    对于程序开发的学者来说,eclipse并不陌生,它为我们提供了一个非常广阔的平台来开发程序.同样我们也可以用它来开发android程序.但是在eclipse中并不能直接开发android程序,需要我们 ...

  10. host 备份

    # Copyright (c) 1993-1999 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for ...