声明:本系列文章只提供交流与学习使用。文章中全部涉及到海康威视设备的SDK都可在海康威视官方网站下载获得。文章中全部除官方SDK意外的代码都可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者本身负责,与本人无关。服务器
为何在开始以前先说题外话呢?主要是为了怕有人误会,觉得这里要写的是一个关于视频流处理的文章。其实这个系列的几篇文章可能和视频流的处理半毛钱关系都没有,冲着视频技术来的看官们,可能让大家失望了。这个系列里主要涉及的技术大概有.net的socket处理,C#写ActiveX插件,少许的线程处理,以及对非托管C++库的调用。网络
另外一方面,这个系列文章说的是一个综合的小项目,没有复杂的功能,没有严谨的项目管理过程,但却有一个技术探索的通常过程。好了,题外话到此结束,下面是正题了。并发
前一段时间公司兄弟部门提出需求,但愿可以把公司部分公共区域的监控视频共享出来给员工查看,这个事情最后落地到鄙人身上。通过多方联系,了解到需求实现的两个制约条件。负载均衡
现状就是这样,没有其余办法,只能开发来解决这些问题了。其实想一想问题也没多麻烦,数据只要采集到服务器上一切就搞定容易了。沿着这条初步思路,在海康官网下了一堆SDK,你还别说,东西挺全的,什么方法都提供现成的了。什么视频采集、设备设置、视频播放这些都有现成的接口能够直接使用。更让我惊喜的是,SDK里竟然还提供C#和Java版本的DEMO,好吧,看到这些前面联系客服碰的钉子就不放心上了,可能客服MM那天失恋了,心情很差也说不定。socket
说回正题,既然有这些给力的SDK就该搭建一个原型来验证把视频数据经过服务端接到客户端这种思路是否正确,具体实现下一篇会细说,这里就长话短说,原型验证成功。说明思路很正确,下一步就是具体的开发工做了,在原型基础上一步步的重构,最后一个从视频设备读取视频数据转发给客户端的系统就搞定了。性能
通过进一步压力测试之后发现有性能不能知足需求,需求要求可以知足公司近千人的使用,并发要求很高,而且视频服务器要求必须及时处理全部数据到客户端的转发,不然客户端将出现跳帧,卡顿的问题。解决压力问题从两个方面着手:学习
最后的最后上线的系统,部署方案如图所示:测试
从操做数据流方面整个序列图以下:优化
从两个图中很清楚的可以看出这个系统的设计思路,网站
固然从图中也很容易发现系统的不足之处。
关于系统的不足之处,是下一个阶段处理的问题,在这个系列里不会处理。可是很是欢迎各位大仙大神讨论。。。这里就很少说了。
最后,细心的读者必定已经发现前面段落中出现的橙色标记的关键字。
一个简单方法论的实践过程。但愿对你们有用。
乱七八糟的写了一堆,实在是想写的点太多,写的时候以为这个重要,那个也重要,最后貌似什么也没写,让你们见笑了。下一篇应该是要写服务端的功能设计及实现,但愿有需求的人多关注。