C#调用AForge实现摄像头录像
2017-09-20 19:53
495 查看
1:
首先下载库文件>>
也可以去官网寻找>>
下载本教程全代码>>
输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/3f82fb7d0d69ac904074f0c10d3e71bb.png)
2:
添加这些引用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/28974ebacc365488db99fcd45c45788e.png)
3:
两个全局变量:
开始代码:
结束代码:
4:
修改App.config,兼容net2.0的一些东西:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/c8bf6357482b52228bb13eec8455c783.png)
不然会这样:
首先下载库文件>>
也可以去官网寻找>>
下载本教程全代码>>
输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/3f82fb7d0d69ac904074f0c10d3e71bb.png)
2:
添加这些引用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/28974ebacc365488db99fcd45c45788e.png)
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的一些东西:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/c8bf6357482b52228bb13eec8455c783.png)
<?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>
不然会这样:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/22/184c30aefa5a0765f2690c41b42022f6.png)
相关文章推荐
- C#结合AForge实现摄像头录像
- C#实现摄像头调用、拍照
- C#实现调用本机摄像头实例
- Unity如何调用安卓手机摄像头实现拍照和录像
- C#使用Aforge调用摄像头拍照的方法
- c# 获取 摄像头 实现录像
- C#简单的Aforge调用摄像头
- c# 获取 摄像头 实现录像
- Unity如何调用安卓手机摄像头实现拍照和录像
- C# 调用AForge类库操作摄像头
- 用c#调用摄像头做录像功能
- VFP调用API来控件USB摄像头,实现拍照或录像。
- c#实现调用笔记本摄像头,实现视频采集
- C#Y实现调用摄像头拍照(过程中需要添加大量的引用)
- C# 使用AForge调用笔记本摄像头拍照
- Unity如何调用安卓手机摄像头实现拍照和录像
- C# 调用AForge类库操作摄像头
- c# 获取 摄像头 实现录像
- C#实现简单的委托异步调用
- AjaxPro实现机制探讨——Ajax是如何调用服务器端C#方法的?