[转]C#中多路IP摄像机的视频监控系统
[翻译]
Andrew Kirillov著Camera Vision - video surveillance on C#
[简介]
纵观当前的视频监控系统,很容易发现人们越来越倾向于基于IP的解决方案。越来越多的制造商提供了大量的IP视频摄像器材。
本文的源码基于C#应用程序,同时允许显示单个或多个摄像机或视频服务器。
应用程序支持的视频资源有:
1 不断更新的JPEG图象
2 MJPEG(动态JPEG)数据流
3 一些Axis网络摄像机和视频服务器(205, 206, 2100, 2110, 2120, 2130R, 2400, 2401, 2460)
4 D-Link 摄像机(只支持JPEG )
5 松下Panasonic摄像机
6 PiXORD 网络摄像机
7 StarDot 网络摄像机
8 支持DirectShow 的本地设备
9 MMS (微软多媒体服务Microsoft Media Services)流
访问JPEG和MJPEG
从JPEG数据源(摄像机)读取数据是非常简单的——你只要不断向这个数据源发送HTTP的请求,下载传回的数据(Response),从中抽取出一个位图出来就可以了。
下面是一个从IP摄像机读取单个JPEG侦的示例:
string sourceURL = "http://webcam.mmhk.cz/axis-cgi/jpg/image.cgi";byte[] buffer = new byte[100000];int read, total = 0;// create HTTP requestHttpWebRequest req = (HttpWebRequest) WebRequest.Create( sourceURL );// get responseWebResponse resp = req.GetResponse( );// get response streamStream stream = resp.GetResponseStream( );// read data from streamwhile ( ( read = stream.Read( buffer, total, 1000 ) ) != 0 ){ total += read;}// get bitmapBitmap bmp = (Bitmap) Bitmap.FromStream( new MemoryStream( buffer, 0, total ) );
但是,大部分的 摄像机都不会让任何人随便读取的,一般需要有用户名和密码,如下面:
// create HTTP requestHttpWebRequest req = (HttpWebRequest) WebRequest.Create( sourceURL );// set login and passwordreq.Credentials = new NetworkCredential( login, password );...
访问MJPEG 资源稍微麻烦点,首先,让我们看看Response回来内容的类型。
multipart/x-mixed-replace; boundary=--myboundary
它们可能回传的不一样,不过一定会有multipart/x-mixed-replace ,然后,后面跟着一个分隔字符串。
本例中是"--myboundary"。
再让我们看看实际的流数据:
--myboundaryContent-Type: image/jpeg... image binary data ...--myboundaryContent-Type: image/jpeg... image binary data ...--myboundaryContent-Type: image/jpeg...
总结一下,访问MJPEG 的算法:
1 匹配回传的内容,找到边界
2 读取第一边界的流
3 读二进制数据知道下一边界
4 从缓冲中抽取一个图形
5 处理图形(如显示)
6 继续执行3-5
Axis 网络摄像机和视频服务器
Axis 网络摄像机和视频服务器,是目前最好的IP视频摄像机。从用户的角度来说,它提供了非常好的视频质量和帧速率,而且,非常容易安装和配置。从程序员的角 度,它看上去更好;公司提供了最完善的开发文档,即包括了如何通过HTTP访问摄像机,也提供了如何通过SDK访问。
下面格式的URL用于访问Axis 网络摄像机/服务器的JPEG和MJPEG图形流
JPEG:http://<servername>/axis-cgi/jpg/image.cgiMJPEG:http://<servername>/axis-cgi/mjpg/video.cgi
这些URL还可以接收,改变图像质量的参数。用的最多的是图像分辨率,摄像机的编号,和希望的帧速率。
例如:
http://<servername>/axis-cgi/jpg/image.cgi?resolution=320x240http://<servername>/axis-cgi/mjpg/video.cgi?camera=2http://<servername>/axis-cgi/mjpg/video.cgi?camera=2&des_fps=5
StarDot 摄像机/视频服务器
他们的优点是,一个视频服务器可以支持6个模拟摄像机。但是缺点是帧速率比较小,而且,不支持MJPEG。
URL的访问格式:
StarDot NetCam:http://<servername>/netcam.jpgStarDot Express 6 (video server)http://<servername>/jpeg.cgi?<cameranumber>http://<servername>/jpeg.cgi?3
PiXORD 摄像机
他们的URL访问格式如下:
JPEG:http://<servername>/images<channel><resolution>http://<servername>/images1sifMJPEG:http://<servername>/getimage?camera=<channel>[&fmt=<resolution>][&delay=<delay>]http://<servername>/getimage?camera=1&fmt=sif&delay=10
Panasonic 松下摄像机
他们的URL访问格式如下:
JPEG:http://<servername>/SnapshotJPEG[?Resolution=<resolution>][&Quality=<quality>]http://<servername>/SnapshotJPEG?Resolution=320x240&Quality=StandardMJPEG:http://<servername>/nphMotionJpeg[?Resolution=<resolution>][&Quality=<quality>]http://<servername>/nphMotionJpeg?Resolution=320x240&Quality=Standard
D-Link摄像机
D- Link生产了大量的IP视频摄像机,它以第一个开始在它们的摄像机中使用MPEG-4而著名。事实上,他们早就把支持MPEG-4作为他们的摄像机的主 要目标,因为他们的摄像机根本就不支持MJPEG。其中大部分支持音频,一些还支持双声道。作为用户,他们非常容易使用和配置。不过作为程序员,就不是那 么简单了。公司不想共享他们的开发文档,大家很难从他们的公司网站上得到什么有价值的开发文档。另外一个大麻烦是,开发人员不得不自己开发监控系统,因 为,他们的监控软件有很多的BUG。:(
我所知道的一种访问D-Link 摄像机的方法是:
http://<servername>/cgi-bin/video.jpg
转载于:https://www.cnblogs.com/zhangh/archive/2008/09/11/1288747.html
[转]C#中多路IP摄像机的视频监控系统相关推荐
- 浅析平安城市对综合视频监控系统资源管理的技术要求
概述 在社会经济飞速发展的今天,城市区域不断扩大,人口流动性增强,社会治安管理难度也随之加大.传统的治安管理和防控手段已难以满足目前的平安城市建设需求,各级政府.公安部门正在加大力度构建综合性.智慧化 ...
- RVMedia组件Crack,IP 摄像机接收视频
RVMedia组件Crack,IP 摄像机接收视频 RVMedia 是一组 Delphi 和 C++Builder VCL 组件,允许您将以下功能添加到您的应用程序中.从本地网络摄像机和 IP 摄像机 ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍 开源倾情奉献:基于.NET打造I ...
- 高清网络视频监控系统中交换机的选择
目前视频监控系统已经完成从传统模拟视频监控到数字视频监控的全面升级,并逐渐发展到高清网络数字视频监控阶段,利用现有的办公网络.行业专网.光纤专网,甚至互联网和无线网络等基础架构,搭建以区域安防.生产监 ...
- 视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA有什么区别?
说H.265之前我们先要弄清H.264, H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一.国际上制定视频编解码技术的组织有两个,一个是"国际电联(ITU-T)&qu ...
- 文读懂安防视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA的区别。
概览 H.265是和H.26x/MPEG-x AVC一样是一种编码压缩的技术,其具体高效率的编码方式. SVAC<安全防范监控数字视音频编解码技术标准>是国家规范化的编码方式,安全防范监控 ...
- 视频监控系统中的流媒体服务器、直写和全切换三种取流架构方案
一.流媒体服务器架构 前摄像头视频信号通过转发流媒体服务器转发至上壁面显示和终端接入,视频存储磁阵列通过流媒体存储服务器写入.实时流.存储流.回放流.控制信令调用流如下: 前端摄像头的实时流需要流媒体 ...
- 视频监控系统中流媒体服务器的主要功能,流媒体存储服务器在视频监控中被正确使用?它有哪些显著的优点?...
原标题:流媒体存储服务器在视频监控中被正确使用?它有哪些显著的优点? 流媒体是指在互联网上以数据流的形式发布音视频多媒体内容的媒体,流媒体技术是指在IP网络上发布多媒体数据流的技术.它改变了传统互联网 ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...
最新文章
- Windows10下Python3做OpenGL的编程
- Linux 统计多个文件中 某字符串出现的行数
- 腾讯电脑管家13内测版官方下载地址
- Altium_Designer-PCB的覆铜步骤
- 玩大了! 阿里工程师的年会竟然这样搞?
- servlet-新建maven报错:web.xml is missing and <failOnMissingWebXml> is set to true
- 前端学习(2888):如何短时间内实现v-for 模板编译1
- 口译务实——unit10 II
- 基于freemarker生成pdf
- linux 网络编程connection refused,《UNIX网络编程》第一个例子出现“connect error: Connection refused”错误提示信息?...
- java.util.LinkedHashMap cannot be cast to
- UART子系统(二) UART协议层 物理层
- Win10系统修改开机密码
- Java在线打开word文档实现指定用户只能编辑指定区域
- 什么叫嵌入式开发 嵌入式开发的要求
- 微信小程序协同工作和发布
- python文字语音互转
- 第二类增值电信业务经营许可证在哪里办?
- ipadmobile通用webapp框架前哨战
- 工业互联网·能耗监控暖通空调远程监控系统方案