声明:本系列文章只提供交流与学习使用。文章中所有涉及到海康威视设备的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. Facebook巴特尔与谷歌移动广告 急于打开中国市场

    随着Facebook(62.5, -0.69, -1.09%)即将设立了销售办事处在北京发酵消息.谷歌(556.33, 2.43, 0.44%)似还差点自觉保护国内市场. 6月5日,谷歌在深圳举行了面 ...

  2. 让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀

    原文 让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀 在 WPF XAML 中使用自己定义的控件时,想必大家都能在 XAML 中编写出这个控件的命名空间了.然而 ...

  3. 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题

    原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越 ...

  4. 分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白

    直接显示Html内容,不像直接导航网址容易处理: 问题:按微软的控件属性提示,可以用WebBrowser.DocumentText 属性赋值 ,但是这种赋值,只是首次有效,后续切换都没啥作用. 下面给 ...

  5. VCL to UniGUI Migration Wizard

    Free Evaluation Edition of The Automatic Migration Scripting Wizard For Converting Legacy Delphi Cod ...

  6. Android 位置服务——BaiduLocation的使用

    原文:Android 位置服务--BaiduLocation的使用 版权声明:本文为博主原创文章,欢迎转载,转载请在文章显眼处说明文章出处并给出连接. https://blog.csdn.net/To ...

  7. 【Quartz】定时器初步实验(一)

    原文:[Quartz]定时器初步实验(一)     以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不. ...

  8. WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口

    原文:WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口 如果无人触摸:60s自动关闭窗口 xmal:部分 <s:SurfaceWindow x:Class=&qu ...

  9. XF 列表视图分组列表填充

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  10. WCF学习目录

    WCF 基本 WCF概念 WCF配置文件详解 多个不同类对象传输思路 WCF 大文件传输配置 Uri ? & = 毫秒数据字符串转换为DateTime POST请求——HttpWebReque ...