我是一个录像机(NVR)
我是一个网络录像机,简称NVR。我的前辈是DVR,我们的区别很简单,DVR接的是模拟摄像机,我连接的是IP摄像机。
我的前辈DVR比我辛苦,因为模拟摄像机的模拟信号连过来之后,他要进行数字化、编码压缩和存储转发;我的工作比较简单,IP摄像机加工完成的数字/编码信号来了之后,我通常只进行存储及转发,偶有回放录像请求,总体占比例不高。
后来有人说为嘛分那么清楚,为嘛不能一台录像机既能接入模拟摄像机又能接入IP摄像机呢,于是出现了混合录像机Hybrid-VR. 有点类似混合动力车的概念。
在小型项目上,有人说你这个造价不菲的NVR,为啥就只能存储转发,解码上墙的活你揽过去得了,于是我又增加了解码卡,就变成了一体机了。
早期,我们家族定位清晰,做视频监控的“中层领导”,不连接报警输入输出、不解码,集中资源做“音视频流”。通常,我们一个NVR管理16~32个IP摄像机(通道),当然也有能力大的据说能管理96路(音视频通道),把他们的视频进行存储及转发,我们向上对CMS(管理平台)汇报,他们给我们下指令,派任务(指令/信令流)。
实际上,我们一直认为我们NVR和前辈DVR是可以长期并存的,当然我们作为后生力量,和高清IPC合力,优势比较明显。但是DVR凭借早期模拟机保有量及简单可靠性,有自己的用武之地。最早提出“NVR, DVR的终结者”的是苏州一企业,虽然噱头,倒也前瞻。
对于我们存在的形式,行业一直是有争议的。甚至说NVR是硬件还是软件还有不同声音。实质上,不同NVR厂商提供的NVR产品形态的确不同,有的提供软硬一体解决方案(TurnKey),如嵌入式NVR或基于某些服务器厂商的NVR,有的提供纯软件(SoftwareOnly)解决方案,如光盘软件加许可(License)的形式。但是这些只是表面现象而已,NVR实质上可以理解为软件,但是其完整功能的实现离不开计算机平台这个载体。你说MP3是硬件还是软件?
除了外在形态,行业对我们争议比较多的就是文件(视频流)的存储形式,这个其实比外在形态之争更有意义,更有内涵。简单讲,就是我们(NVR)把视频流抓过来了(从IPC或编码器),面对视频大仓库(磁盘阵列),如何存储,什么形式(文件存储还是块存储)。File I/O及Block I/O是存储数据的两种不同方式,即文件IO及块IO,File I/O方式中,操作系统需要对硬盘进行格式化,在硬盘分区上产生一个文件系统结构,操作系统通过文件系统来实现对硬盘数据的定位;在Block I/O方式中,操作系统不需对硬盘进行格式化,并不在硬盘分区上产生文件系统,应用程序绕过OS直接定位读取Raw Disk(裸盘)中的数据。
通过Block I/O (Raw I/O)来直接定位硬盘的数据,效率较高,检索方便、无碎片。
关于稳定性。机器也会犯病,我们当然有趴窝的时候。我们的故障点可能在于服务器硬件、存储硬盘、网络、软件等环节。上面说了,我们手下一般16~32个小弟(IPC),我们停工了,他们辛辛苦苦加工出来的东西(视频流)没有上家了,导致视频没有的长期存储功能,短期存储可能基于个别IPC的小金库,有一点点。所以我们需要冗余功能(Redundency),简单讲就是每10台左右NVR,多出来一台冗余NVR候着,他平时不干活,我们当中有人休病假(宕机),他自动识别并接管,一旦病好了,再恢复原状,冗余机就继续一边凉快去。
智能化、物联网时代,不说自己智能都不好意思出来混。我们家族当然也智能化的路上前进。早期的智能NVR,即带视频分析功能的NVR,Smart NVR,将视频分析算法内置于NVR内,采用基于服务器方式执行视频内容的分析过程。此架构的优点是算法由服务器的CPU完成,因此,对前端设备如编码器、网络摄像机可以不做任何设置或改动,即可过渡到智能系统。另外,如果日后需要进行通道的分析功能调整,升级算法,只需要针对NVR,比较容易实施。未来的智能化可以对视频进行识别、分析、描述,将非结构化数据转变化结构化数据提供给管理平台。目前已有NVR产品成功引入图像识别分析类的智能技术应用,实现视频摘要、智能检索、智能告警等功能。
我的实战经验分享:以下图的系统架构为案例进行说明,在Site A及Site B分别有16台摄像机(2台8路编码器),编码器的码流情况设定为4CIF@RT@2M。共32路摄像机通道指定到核心网的一台NVR服务器上,NVR与磁盘阵列通过SCSI通道直接连接进行存储,所有录像需要保存7天;控制中心设置9台监视器构成的电视墙,进行实时解码显示;控制中心设置1台客户工作站,用来对任意4个通道进行录像回放工作(Playback);远程有1台客户工作站(Live),用来对任意4个通道进行实时视频浏览工作。
NVR部署的关键在于NVR的数量设计、存储空间设计及网络带宽设计。因此,在设计、选型NVR系统之前,必须明确如下事宜:
摄像机的数量及分布情况。
视频通道的码流设置,如帧率、分辨率等(其实质是确定码流)。
控制中心的电视墙位置(在网络中)。
NVR及磁盘阵列的位置(在网络中)。
客户端的数量、位置及其应用情况(进行回放、实时显示等)。
归档服务器的位置及视频备份的模式(全部归档、部分归档等情况)。
虽然简单,但已经足够让我们了解系统设计中需要注意的主要事项。从图中可以看出,系统的主要构成部分是编码器、NVR、解码器及客户工作站,从中可以快速提炼出如下信息。
通道情况:通道数量32ch,码流2Mbps。
实时监视(Live)视频流9ch×2Mbps+4ch×2Mbps。
实时存储(Record)视频流32ch×2Mbps。
实时回放(Playback)视频流4ch×2Mbps。
最后,说一个虚无缥缈的事,云计算会不会终结NVR? 终结倒是谈不上,但是是个趋势。很简单,NVR既然是通用软件,如同CRM/OA软件一样,直接部署在阿里巴巴或者亚马逊的云端就完了,用户需要购买的,就是IPC(或者租用),以及阿里巴巴或者亚马逊的云存储服务资源(月租形式),目前的主要是带宽问题。机场、地铁、铁路,应该是NVR云化的排头兵。
最后八卦一下圈里的事儿。先说外来的和尚,早期的当属以色列NICE,BOSCH,MILESTONE,在产品理念及案例上,诸多亮点;国内的宇视,跟国外产品套路接近,“块存储”亮点颇多,引领一阵风骚和争议;科达提出了“NVR, DVR终结者的口号”;后起之秀东方网力,提出了很不错的NVR中间件概念;海康和大华,作为DVR起家的两个龙头,在NVR产品上,四平八稳;模拟巨头TYCO,PELCO的 NVR,影响力不大;日系SONY, 松下的NVR,听说过,真没见过!
我是一个录像机(NVR)的更多相关文章
- 网络编程基础【day10】:我是一个线程(四)
本节内容 1.第一回 初生牛犊 2.第二回 渐入佳境 3.第三回 虎口脱险 4.第四回 江湖再见 第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里 ...
- 网络编程基础【day10】:我是一个进程(三)
本节内容 1.引子 2.进程的诞生 3.线程 4.争吵 一.引子 我听说我的祖先们生活在专用计算机里, 一生只帮助人类做一件事情,比说微积分运算 了.人口统计了 .生成密码.甚至通过织布机印花 ! ...
- 趣说Java:我是一个线程
第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴. 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说 ...
- 曾经我是一个只会excel的数据分析师,直到我遇到了……
我是一个数据分析师. 准确来说我是一个当年只会excel数据透视表,就天不怕地不怕地来当数据分析师的人.当年的某一天,我的老板Q我: 小刘啊,我小姨子给了我一个全国市委书记的名单,你帮我看看,有什么规 ...
- 我是一个CPU:这个世界慢!死!了!
最近小编看到一篇十分有意思的文章,多方位.无死角的讲解了CPU关于处理速度的理解,看完之后真是豁然开朗.IOT时代,随着科技的发展CPU芯片的处理能力越来越强,强大的程度已经超乎了我们的想象.今天就把 ...
- 我是一个MySQL小白
我是一个MySQL小白 第一回早起装扮 “mysql,Oracle,SQL-SERVER你们三个 起床没?”,清晨七点多师父喊道. “师父,我(mysql)哪敢睡觉呀,我还在查询表呢,有客户的密码忘记 ...
- 大家好,我是一个JAVA初学者,想在这里记下自己学习过程中的点点滴滴,请多多关照
大家好,我是一个JAVA初学者,想在这里记下自己学习JAVA的点点滴滴,请多多关照. 以前一直在QQ空间里记录的,但感觉有些麻烦,而且有些东西自己理解的并不完善甚至都不正确,现在开始在这里重新记录,从 ...
- 我是一个线程 - IBM刘欣
来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...
- GDG Xi'an DevFest 2019 闪电演讲 -《假如我是一个浏览器》PPT(经典多图,建议收藏)
GDG Xi'an DevFest2019演讲PPT链接: http://tmp.link/f/5dd9e6bf461b6 闪电演讲<假如我是一个浏览器>PPT链接: https://gi ...
随机推荐
- Flask之项目创建,路由以及会话控制
Flask Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎 ...
- mac 不小心把管理员改成了普通用户
最近手贱,不小心把mbp仅有的管理员账号设置成了普通用户,想重新改回管理员,竟然需要用其他管理员账号去更改.简直 那个 啥 ~ 下面将提供创建一个新的管理员账号的方案 不仅适用于上述我出现的问题,也适 ...
- pytoch word_language_model 代码阅读
参考代码地址:https://github.com/pytorch/examples/tree/master/word_language_model /word_language_model/data ...
- GIS中的引擎:地图引擎
什么是地图引擎?它和地图软件有什么区别? 引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备.诸如汽车.轮船.飞机的动力提供的核心设备就是引擎.IT领域中,常听说的有搜索引擎.图形引 ...
- angularjs 下滑线滑动
css: .detail_row { width: 410px; height: 34px; clear: both; border-bottom: 1px solid #eaeeef; font-s ...
- http协议文件与数据上传、及上传图片io流错误
package com.smartdoer.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; im ...
- servlet运行“/*”引起的java.lang.StackOverflowError
<servlet> <servlet-name>login</servlet-name> <servlet-class>com.jd.login.UI. ...
- JavaScript的组成 | DOM/BOM
往期回顾 在上一期的<JavaScript的组成 | 核心-ECMAScript >☜里,我们有说到JavaScript 是由三大部分组成,分别是:核心ECMAScript.文档对象模型- ...
- 2019-04-17-day034-线程与数据共享
内容回顾 锁 互斥锁 能够保护数据的安全性 保证对于数据的修改操作同一时刻多个进程只有一个进程执行 进程数据不安全 : 同时修改文件/数据库/其他共享资源的数据 ###队列 -- 实现了进程之间的通信 ...
- 5.移动终端App测试点归纳
以下所有测试最后必须在真机上完整的执行. 1 安装.卸载测试 1.1 在真机上.第三方软件(xy苹果助手.91.安卓助手)的安装与卸载 1.2 安装在手机卡上 或 SD卡上 (不同的IOS和安卓版本) ...