我是一个网络录像机,简称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)的更多相关文章

  1. 网络编程基础【day10】:我是一个线程(四)

    本节内容 1.第一回 初生牛犊 2.第二回 渐入佳境 3.第三回 虎口脱险 4.第四回 江湖再见 第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里 ...

  2. 网络编程基础【day10】:我是一个进程(三)

    本节内容 1.引子 2.进程的诞生 3.线程 4.争吵 一.引子 我听说我的祖先们生活在专用计算机里, 一生只帮助人类做一件事情,比说微积分运算 了.人口统计了 .生成密码.甚至通过织布机印花 !   ...

  3. 趣说Java:我是一个线程

    第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴. 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说 ...

  4. 曾经我是一个只会excel的数据分析师,直到我遇到了……

    我是一个数据分析师. 准确来说我是一个当年只会excel数据透视表,就天不怕地不怕地来当数据分析师的人.当年的某一天,我的老板Q我: 小刘啊,我小姨子给了我一个全国市委书记的名单,你帮我看看,有什么规 ...

  5. 我是一个CPU:这个世界慢!死!了!

    最近小编看到一篇十分有意思的文章,多方位.无死角的讲解了CPU关于处理速度的理解,看完之后真是豁然开朗.IOT时代,随着科技的发展CPU芯片的处理能力越来越强,强大的程度已经超乎了我们的想象.今天就把 ...

  6. 我是一个MySQL小白

    我是一个MySQL小白 第一回早起装扮 “mysql,Oracle,SQL-SERVER你们三个 起床没?”,清晨七点多师父喊道. “师父,我(mysql)哪敢睡觉呀,我还在查询表呢,有客户的密码忘记 ...

  7. 大家好,我是一个JAVA初学者,想在这里记下自己学习过程中的点点滴滴,请多多关照

    大家好,我是一个JAVA初学者,想在这里记下自己学习JAVA的点点滴滴,请多多关照. 以前一直在QQ空间里记录的,但感觉有些麻烦,而且有些东西自己理解的并不完善甚至都不正确,现在开始在这里重新记录,从 ...

  8. 我是一个线程 - IBM刘欣

    来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...

  9. GDG Xi'an DevFest 2019 闪电演讲 -《假如我是一个浏览器》PPT(经典多图,建议收藏)

    GDG Xi'an DevFest2019演讲PPT链接: http://tmp.link/f/5dd9e6bf461b6 闪电演讲<假如我是一个浏览器>PPT链接: https://gi ...

随机推荐

  1. 『流畅的Python』第15章:上下文管理器和else块

  2. 在win上配置linux虚拟机图解

    首先,先下载安装vmware,cpu的类型不支持AMD. 一直点下一步完成安装.

  3. 用VSCode的debugger for chrome插件调试服务器项目的配置方式

    项目放到tomcat服务器启动起来(以tomcat服务器为例). 配置launch 把谷歌浏览器彻底关闭!(要彻底) 打断点 点左侧的调试 点刷新!(这一步也需要)

  4. laravel5.2加载自定义的aliyun扩展包

    把文件夹加载进来 在 app.php里面注册 serviceprovider 在 app/filesystems.php 里面 加入相关的配置 把 cloud的值 改成对应的扩展 在.env文件里面完 ...

  5. ui自动化:python+appium----环境搭建

    前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...

  6. oracle 如何查询/修改dmp文件的字符集

    1.如何查询dmp文件的字符集 用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集.如果dmp文件不大,比如只有几M或几十M,可以用Ul ...

  7. HBase和Phoneix使用示例

    HBase操作 基本操作 创建表 Examples: hbase> create 't1', {NAME => 'f1', VERSIONS => 5} hbase> crea ...

  8. HTML知识点梳理1

    1,HTML基本结构 <!DOCTYPE html> <html> <head></head> <body> </body> & ...

  9. this指向问题 --无return

    this的指向在函数定义的时候是确定不了的只有在函数执行的时候才能确定this到底指向谁.this指向上一级对象 1.函数调用,this指向window var color = "red&q ...

  10. oracle note

    null null为无效的,未指定的,未知的活不可预知的值 null不是空格或0 包含null 的数学表达式其结果都为空值 null 永远!= null 判断某个字段为null,用 ename is ...