标签归档:智能摄像头

安防视频监控P2P穿透原理及解决方案

近年来,随着网络带宽、计算机处理能力,芯片技术水平的提升以及存储容量的迅速提高,以及各种视频智能分析技术的出现,视频监控系统的优势愈发明显,其高度的开放性、集成性和灵活性为视频监控系统和设备的整体性能提升创造了必要的条件,同时为整个安防产业的发展提供了更加广阔的发展空间。然而,目前国内网络环境比较复杂,运营商众多,同时各单位内部网络结构较为复杂、公网静态IP地址有限等因素限制了采用IP直连方式来连接设备功能的实现,外网访问变得困难。同时采用传统动态域名解析(DDNS)方式,配置复杂,成功率低。随着消费类摄像机以及智能手机的普及,如何更好,更方便的远程访问摄像机视频成为行业重要的一个需求。摄像机能否支持远程访问,支持手机访问,P2P穿透的解决方案是其中最重要的一个要素。

P2P访问的工作原理


P2P穿透即点对点穿透(peer to peer),是指前端设备通过一定的处理方式后,主动与请求客户端直接建立连接发送媒体流。

当前安防视频监控系统中的P2P主要工作原理是在前端设备中移植进一个P2P穿透辅助程序,P2P穿透辅助程序将向服务器注册该设备,服务器也可以由此来识别设备是否在线。同时P2P穿透辅助程序将与服务器进行必要的信息交换来实现网络分析和连接建立功能。

摄像机P2P穿透的工作原理如下所示:

P2P访问的核心是NAT穿越


NAT的穿越并非安防监控领域的技术,是目前VOIP以及即时通信等产品的基础性技术,目前来讲已经比较成熟,且有完整的技术标准RFC,同时也有众多的实现方案,包括许多已经得到广泛应用的开源项目。

简单来讲,实现NAT的穿越是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接近100%,TCP则存在一些情况无法实现穿越,主要受限路由器的端口映射机制。

要实现NAT穿越,需要有穿越控制服务器部署在互联网(有固定的域名或者IP),由该服务器来协助网络摄像机和客户端来实现NAT穿越。有些服务器还能在TCP不能穿越的情况下,实现RELAY(数据中继转发)的功能,以确保二者之间能实现数据通信。

由于NAT穿越控制服务器不同于安防监控系统中的媒体转发服务器,主要进行信令交互,不转发媒体数据,在协助打通数据通道之后,对应的网络摄像机和客户端就不会再占用服务器带宽和处理能力了,因此一台穿越控制服务器可以接入数量庞大的网络摄像机和客户端(例如有P2P方案厂家宣传在全球部署超过50台服务器,接入了超过1000万台设备。)。

网络摄像机和客户端之间的访问机制

通常网络摄像机都有唯一ID,并通过该ID注册到穿越控制服务器。客户端要访问对应的网络摄像机时,也需要先注册到穿越控制服务器,并提交对应 网络摄像机的ID,由穿越控制服务器查找对应的网络摄像机,并协助网络摄像机和客户端之间进行NAT穿越,最后打通一个点对点的数据传输通道。之后,二者 即可进行正常的媒体和信令交互了。

为实现更加有效的管理,服务器可对设备接入进行认证。此外,如果设备ID过长,也可以为设备建立别名,客户端访问时用设备别名作为参数,服务器来查找对应设备。

数据传输机制

网络摄像机和客户端之间的数据传递包括有媒体流,信令流等。信令流数据量较小,媒体流数据量加大,而且需要有较好的实时性。

如果媒体流和信令流分开传输,需要打通多个通道,增加了复杂性和出错可能,同时增加了服务器的负担。

前面也讲过,UDP协议能有比较好的NAT穿透性,也比较适合媒体流的传输,但可靠性较差,不宜传输信令。为减轻服务器负担(避免TCP无法穿 透需要转发),提高穿透成功率,建议只打通一个UDP通道,利用该UDP通道封装媒体和信令流,在应用层加以区分,哪些是媒体流,那些是信令流。

由于UDP传输信令可靠性极差,即使是传输媒体数据,在互联网环境下肯定会出现丢包的情况,仍然会出现图像花屏或者解码出错的情况,因此必须要解决此问题。

好在利用UDP协议进行可靠的数据传输的需求早就存在,并有了比较好的解决方案,那就是通过UDP协议在应用层实现数据的缓冲,序列化,重传,可靠性控制和拥塞控制。

如果上述三个问题都已解决,则网络视频监控的P2P方案已经基本实现,剩下的就是产品化的问题。

目前P2P方式远程访问摄像机,有3种主要方式。电脑PC网页端访问,PC电脑客户端访问,手机app访问。

PC访问网络摄像机。

PC访问网络摄像机,可以先访问一个网页,传入网络摄像机的序列号。

网页加载一个控件,该控件通过NAT穿越控制服务器和该序列号对应的网络摄像机实现NAT穿透后,通过可靠的UDP传输信令和媒体数据。控件提供视频浏览,对讲,云台控制,参数查询设置等功能。

如果用PC客户端访问,则不需要加载控件,只需要输入网络摄像机对应的系列号。

手机访问网络摄像机。

手机由于平台的不同,需要单独开发对应的客户端或者插件以实现和PC访问类似功能。但原理是一样的,都需要通过NAT穿越控制服务器和该序列号对应的网络摄像机实现NAT穿透后,通过可靠的UDP传输信令和媒体数据。由于开源的NAT穿越库是可以移植的,在LINUX,WINCE,IOS,Android,Sbrian等都可以实现同样的NAT穿越功能。

P2P穿透限制


1.由于P2P穿透成功后是设备与客户端2者直接进行通信的,因此,访问设备的数量会影响用户的观看体验。不同的厂商对于设备的访问限制处理都不一致:有的厂商是做了访问数量限制,限制访问数为1-3个,那边前3个用户访问设备时可以进行实时预览操作。而超过这个数量的用户将无法进行实时预览,这样的操作是为了保护每个访问设备的用户都可以正常的观看到设备图像,保证图像质量。

2.P2P穿透的成功率。一般来说,P2P穿透不可能100%成功。有些厂家给出的是95%99%90%等等的穿透成功率。在穿透不成功的情况下,可以采用流媒体转发的方式来访问摄像机。这样对中间流媒体转发平台要求就比较高了,有些厂商为了节省服务器及带宽资源,对通过转发访问的方式做了些限制,例如通过转发只能访问摄像机的子码流。

P2P穿透访问应用


下图是某个P2P方案商的P2P平台运用



常见的P2P物联网平台


常见的智能摄像头P2P平台