声明:本系列文章只提供交流与学习使用。文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到。文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自己负责,与本人无关。

题外话:

为什么在开始之前先说题外话呢?主要是为了怕有人误会,以为这里要写的是一个关于视频流处理的文章。其实这个系列的几篇文章可能和视频流的处理半毛钱关系都没有,冲着视频技术来的看官们,可能让你们失望了。这个系列里主要涉及的技术大概有.net的socket处理,C#写ActiveX插件,少量的线程处理,以及对非托管C++库的调用。

另一方面,这个系列文章说的是一个综合的小项目,没有复杂的功能,没有严谨的项目管理过程,但却有一个技术探索的一般过程。好了,题外话到此结束,下面是正题了。

需求描述:

前一段时间公司兄弟部门提出需求,希望能够把公司部分公共区域的监控视频共享出来给员工查看,这个事情最后落地到鄙人身上。经过多方联系,了解到需求实现的两个制约条件。

  1. 网络条件:员工使用网段与监控设备所在网段为不同网段,之间有物理隔离,无法直接访问。这个问题比较容易解决,迁移一下设备所在的网段就能解决。
  2. 设备限制:海康的监控摄像头最多只支持6个客户端同时连接,无法满足现有需求。这个比较难搞,联系厂商,厂家说不提供这一块的服务,需要自己解决。这态度,我就呵呵了。

方案思路:

现状就是这样,没有其他办法,只能开发来解决这些问题了。其实想想问题也没多麻烦,数据只要采集到服务器上一切就搞定容易了。沿着这条初步思路,在海康官网下了一堆SDK,你还别说,东西挺全的,什么方法都提供现成的了。什么视频采集、设备设置、视频播放这些都有现成的接口可以直接使用。更让我惊喜的是,SDK里居然还提供C#和Java版本的DEMO,好吧,看到这些前面联系客服碰的钉子就不放心上了,可能客服MM那天失恋了,心情不好也说不定。

说回正题,既然有这些给力的SDK就该搭建一个原型来验证把视频数据通过服务端接到客户端这种思路是否正确,具体实现下一篇会细说,这里就长话短说,原型验证成功。说明思路很正确,下一步就是具体的开发工作了,在原型基础上一步步的重构,最后一个从视频设备读取视频数据转发给客户端的系统就搞定了。

经过进一步压力测试以后发现有性能不能满足需求,需求要求能够满足公司近千人的使用,并发要求很高,并且视频服务器要求必须及时处理所有数据到客户端的转发,否则客户端将出现跳帧,卡顿的问题。解决压力问题从两个方面着手:

  1. 进一步重构优化现有代码,提高性能。
  2. 设计分布部署。

最后的最后上线的系统,部署方案如图所示:

从操作数据流方面整个序列图如下:

从两个图中很清楚的能够看出这个系统的设计思路,

    1. 视频中转服务器不断从设备将视频数据读入本地;
    2. 客户端打开访问页面时先从Web服务器获取到视频服务器的地址;
    3. 客户端插件直接连接视频服务器,读取视频数据解码显示。

当然从图中也很容易发现系统的不足之处。

    1. 系统没有对各视频中转服务器状态进行跟踪,可能分配给客户端一个异常的节点;
    2. 由于视频中转服务器之间无法通讯并且不存在管理节点,所以无法做负载均衡;
    3. 视频当中转服务器节点书超过监控设备最大连接数时,无法进一步扩容。

关于系统的不足之处,是下一个阶段处理的问题,在这个系列里不会处理。但是非常欢迎各位大仙大神讨论。。。这里就不多说了。

最后,细心的读者一定已经发现前面段落中出现的橙色标记的关键字。

  1. 初步思路
  2. 搭建一个原型
  3. 原型验证
  4. 重构
  5. 测试
  6. 进一步重构
  7. 循环5、6直到系统上线但不截止上线为止。。。

一个简单方法论的实践过程。希望对大家有用。

乱七八糟的写了一堆,实在是想写的点太多,写的时候觉得这个重要,那个也重要,最后貌似什么也没写,让大家见笑了。下一篇应该是要写服务端的功能设计及实现,希望有需求的人多关注。

海康威视频监控设备Web查看系统(一):概要篇的更多相关文章

  1. 海康威视频监控设备Web查看系统(三):Web篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK以为的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...

  2. 海康威视频监控设备Web查看系统(二):服务器篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...

  3. 海康视频监控---Demo

    1,使用在页面中调用ActiveX控件 <object classid='clsid:E7EF736D-B4E6-4A5A-BA94-732D71107808' codebase='' stan ...

  4. 视频监控——从其他浏览器打开低版本IE方案

    1. 方案背景 由于低版本IE浏览器并不支持很多新的页面技术,导致部分页面效果难以实现;另一方面IE浏览器版本与操作系统绑定,难以统一,不同版本IE间的不兼容导致多种兼容性问题,因此本项目暂定采用Ch ...

  5. VSAM:视频监控系统 A System for Video Surveillance and Monitoring

    VSAM(VideoSurveillance and Monitoring)视频监控系统 Robotics Institute CMU 1:引言 2:试验床介绍 3:基本的视频分析算法:运动目标检测, ...

  6. Qt编写安防视频监控系统18-云台控制

    一.前言 云台控制是视频监控系统中必备的一个功能,对球机进行上下左右的移动,还有焦距的控制,其实核心就是控制XYZ三个坐标轴,为了开发这个模块,特意研究了各种云台控制的方法和开源库比如soap,有些厂 ...

  7. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...

  8. 基于.NET打造IP智能网络视频监控系统

    开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码   开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造 ...

  9. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台

    前言 随着Android系统的不断更新和发展,现在越来越多的硬件产品选择用安卓系统作为运行环境,电视机,机顶盒.门禁.行车记录仪.车载系统.单兵设备等等,Android系统底层还是Linux,但对上层 ...

随机推荐

  1. WPF 使用 Pandoc 把 Markdown 转 Docx

    原文:WPF 使用 Pandoc 把 Markdown 转 Docx 本文告诉大家如何通过 WPF 使用 Pandoc 把 Markdown 转 Docx 文件 在之前有文章使用 Pandoc 把 M ...

  2. WPF--常用布局介绍

    概述:本文简要介绍了WPF中布局常用控件及布局相关的属性 1 Canvas Canvas是一个类似于坐标系的面板,所有的元素通过设置坐标来决定其在坐标系中的位置..具体表现为使用Left.Top.Ri ...

  3. [Example of Sklearn] - Example

    reference : http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据 ...

  4. STL序列容器之vector

    一,vector容器简介 1.vector容器的原理 vector是将元素置于一个动态数组中加以管理的容器. 2.vector容器的特点 vector容器可以随机存取元素,支持索引存取(即用数组下标的 ...

  5. APP和服务端-架构设计(二)

    1. App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 1.1 安全机制的设计 现在,大部分App的接口 ...

  6. POJ 1988 Cube Stacking (种类并查集)

    题目地址:POJ 1988 这道题的查找合并的方法都能想的到,就是一点没想到,我一直天真的以为查询的时候,输入后能立即输出,这种话在合并的时候就要所有的结点值都要算出来,可是经过路径压缩之后,没办法所 ...

  7. wxWidgets初学者导引(3)——wxWidgets应用程序初体验

    wxWidgets初学者导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith ...

  8. exponential family distribution(指数族分布)

    1. exponential family 给定参数 η,关于 x 的指数族分布定义为如下的形式: p(x∣∣η)=h(x)g(η)exp{ηTu(x)} 其中 x 可以为标量也可以为矢量,可以为离散 ...

  9. 在webapi中使用swagger

    1 在webapi项目下安装swagger,包名 Swashbuckle.AspNetCore 2 在webapi的startup.cs文件中添加swagger服务 /// <summary&g ...

  10. Microsoft IoT Starter Kit

    Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...