声明:本系列文章只提供交流与学习使用。文章中所有涉及到海康威视设备的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. 使用dom4j来处理xml的一些常用方法

    要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就 ...

  2. 音频、视频等文件格式(.ts、.meta)及其认识

    MPEG:Moving Picture Experts Group,动态图像专家组, JPEG:Joint Photographic Experts Group,联合图像专家组 1. .ts .ts ...

  3. 编程军规 —— Java 篇

    提高代码的可读性,规避容易出现的错误. 0. 共性 对象或引用的非空性判断: 强制类型转换时: 函数返回时: 函数的输入参数: 任务执行的成功或失败判断: 文件打开:网络连接:数据库连接: 内存申请: ...

  4. latex 矩阵分块(block matrix)

    Lesson 12: Making Block Matrices in LATEX 按列分块: [AAb⋯An−1b] $$ \left[ \begin{array}{c|c|c|c} A & ...

  5. spring boot mybatis XML文件读取properties配置信息

    配置文件application.properties中相关配置信息可以在部署以后修改,引用配置信息可以在代码和mybatis的映射文件中 1.JAVA代码 可以通过变量去读取 application. ...

  6. Ubuntu 15.04 clang++ 3.6 编译boost 1.59/1.55

    Ubuntu 15.04已经可以直接通过apt-get insall 安装clang 3.6, 并且预装的gcc版本是4.9.2.这些安装过程在这里介绍. 首先下载boost源码 wget -O bo ...

  7. Java之线程池管理

    JDK5后建议使用ExecutorService与Excutors来创建与管理线程池, 不再建议直接使用Thread. 开始不明白原因, 今天知道结果了:使用Thread.currnetThread. ...

  8. 2-16 mysql主从复制

    1. 部署MYSQL主从同步 <M-S> 环境:mysql版本一致,均为5.7.18 master xuegod4  ip  192.168.10.34   数据库密码 yourpassw ...

  9. 图片处理拓展篇 : 图片转字符画(ascii)

    首先要明确思路, 图片是由像素组成的, 不同的像素有不同的颜色(rgb), 那么既然我们要转化为字符画, 最直接的办法就是利用字符串来替代像素, 也就是用不同的字符串来代表不同的像素. 另外图片一般来 ...

  10. WMWaire使用FreeNAS硬盘挂载、Raid0

    FreeNAS硬盘挂载.Raid0 发表于2012 年 03 月 28 日由admin 创建成功,FreeBSD的Hardware显示状态 今天,我们将在VMware工具的帮助下,学习“FreeNAS ...