Andrew Kirillov著Camera Vision - video surveilla
来源:互联网 发布:mac百度云盘无限试用 编辑:程序博客网 时间:2024/06/05 13:33
本文的源码基于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 request HttpWebRequest req = (HttpWebRequest) WebRequest.Create( sourceURL );
// get response WebResponse resp = req.GetResponse( );
// get response stream Stream stream = resp.GetResponseStream( );
// read data from stream while ( ( read = stream.Read( buffer, total, 1000 ) ) != 0 )
{
total += read;
}
// get bitmap
Bitmap bmp = (Bitmap) Bitmap.FromStream( new MemoryStream( buffer, 0, total ) );
但是,大部分的摄像机都不会让任何人随便读取的,一般需要有用户名和密码,如下面:
// create HTTP request HttpWebRequest req = (HttpWebRequest) WebRequest.Create( sourceURL ); // set login and password req.Credentials = new NetworkCredential( login, password ); ...
访问MJPEG 资源稍微麻烦点,首先,让我们看看Response回来内容的类型。
multipart/x-mixed-replace; boundary=--myboundary
它们可能回传的不一样,不过一定会有multipart/x-mixed-replace ,然后,后面跟着一个分隔字符串。
本例中是"--myboundary"。
再让我们看看实际的流数据:
--myboundary
Content-Type: image/jpeg
... image binary data ...
--myboundary
Content-Type: image/jpeg
... image binary data ...
--myboundary
Content-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.cgi
MJPEG:
http://<servername>/axis-cgi/mjpg/video.cgi
这些URL还可以接收,改变图像质量的参数。用的最多的是图像分辨率,摄像机的编号,和希望的帧速率。
例如:
http://<servername>/axis-cgi/jpg/image.cgi?resolution=320x240
http://<servername>/axis-cgi/mjpg/video.cgi?camera=2
http://<servername>/axis-cgi/mjpg/video.cgi?camera=2&des_fps=5
StarDot 摄像机/视频服务器
他们的优点是,一个视频服务器可以支持6个模拟摄像机。但是缺点是帧速率比较小,而且,不支持MJPEG。
URL的访问格式:
StarDot NetCam:
http://<servername>/netcam.jpg
StarDot Express 6 (video server)
http://<servername>/jpeg.cgi?<cameranumber>
http://<servername>/jpeg.cgi?3
PiXORD 摄像机
他们的URL访问格式如下:
JPEG:
http://<servername>/images<channel><resolution>
http://<servername>/images1sif
MJPEG:
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=Standard
MJPEG:
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
作者网站:http://www.aforgenet.com
- Andrew Kirillov著Camera Vision - video surveilla
- Camera Vision - video surveillance on C#
- Camera Vision - video surveillance on C#
- Computer Vision Camera Calibration Report
- camera video数据流
- camera video数据流
- Video camera formats: yuv411, yuv422
- Gige Vision Camera 和usb,1394 camera的优缺点比较
- Violence Detection in Video Using Computer Vision Techniques
- Linux USB Video Class with Camera
- mtk6572平台camera video 报错问题
- HTML5 Camera(摄像头) 和 Video(视频)控制
- opencv & qt study-(2)-打开video& camera
- Android 5.0 Camera (6): record video
- Learning OpenCV: read video from Camera
- ROS 教程之 vision: 摄像头标定camera calibration
- Genius Vision NVR (4) Camera IP Setup 172.18.15.16
- 在一个Activity中同时显示Video Camera 3D
- linux安装与包管理(管理共享库)
- Visual C++ 中操纵 MS Word 123
- Java学习笔记(2)
- Bho编定ie插件
- VC++开发BHO插件——定制你的浏览器
- Andrew Kirillov著Camera Vision - video surveilla
- maven 的命令
- 测试用例管理
- 使用pocketxpdf在多普达565上看PDF电子书
- hibernage
- Oracle视图
- VC利用WORD替换功能打印发票
- 缩短MySQL innodb数据库关闭时间的技巧
- 找出字段中某字符的个数