P2P远程访问技术在安防视频监控中的应用--imxiangzi 好好看
网络、芯片、物联网技术发展促进了安防视频监控产品走进普通家庭,个人消费者买一台普通WiFi摄像机,用来看家,看老人,看孩子,看宠物,随时随地手机app远程监控,回放录像。价格便宜,功能强大,使用方便。
这其中有一个重要的网络技术,就是P2P远程访问。曾几何时,视频监控要实现联网远程监控,限制条件很多。要不有公网的静态IP,可以通过IP地址直连,但是基于中国的电信行业现实条件,对于普通家庭用户来说,获取公网静态IP地址成本很高。
没有公网IP,那就只能走另一条路,在路由器里做端口映射,绑定动态域名(DDNS)(参见《DDNS:动态域名解析在安防中的应用》一文)。这个方法的问题再于,对于普通用户来说,端口映射方法比较复杂,不易掌握。同时动态域名稳定性比较差。
P2P远程访问技术解决了以上痛点,方便简单,稳定可靠。P2P远程访问的核心即P2P穿透,点对点穿透,Peer to Peer。
前端安防摄像机通过一定的处理方式后,主动与请求客户端(手机app)直接建立连接发送视频流。
工作原理
当前系统中的P2P主要工作原理是在前端摄像机中移植进一个P2P穿透辅助程序,P2P穿透辅助程序将向*台服务器注册该设备,服务器也可以由此来识别设备是否在线。同时P2P穿透辅助程序将与服务器进行必要的信息交换来实现网络分析和连接建立功能。P2P穿透的工作原理如下所示:
P2P穿透需要面对三种可能的网络情况:1. 摄像机和客户端在同一局域网。这种最简单,局域网内直接直连,不需要穿透。网络传输的实时性和流畅度都能得到保障;2.摄像机和客户端不在同一个局域网内,能成功P2P穿透。下面会具体讲。3.不能成功穿透,此时需要使用流媒体转发的方式。
穿透方法
实现P2P穿透是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接*100%,TCP则存在一些情况无法实现穿越,主要受限路由器的端口映射机制。
要实现P2P穿透,需要有P2P穿透服务器部署在互联网(有固定的域名或者IP),由该服务器来协助网络摄像机和客户端来实现P2P穿透。有些服务器还能在TCP不能穿越的情况下,实现流媒体转发的功能,以确保二者之间能实现数据通信。
由于P2P穿透服务器不同于安防监控系统中的流媒体转发服务器,主要进行信令交互,不转发媒体数据,在协助打通数据通道之后,对应的网络摄像机和客户端就不会再占用服务器带宽和处理能力了,因此一台P2P穿透服务器可以接入数量庞大的网络摄像机和客户端。
通常网络摄像机都有唯一ID,并通过该ID注册到P2P服务器。客户端要访问对应的网络摄像机时,也需要先注册到P2P服务器,并提交对应 网络摄像机的ID,由服务器查找对应的网络摄像机,并协助网络摄像机和客户端之间进行穿透,最后打通一个点对点的数据传输通道。之后,二者 即可进行正常的媒体和信令交互了。
为实现更加有效的管理,服务器可对设备接入进行认证。
PC访问网络摄像机。
PC访问网络摄像机,可以先访问一个网页,传入网络摄像机的序列号。
网页加载一个控件,该控件通过P2P穿透服务器和该序列号对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。控件提供视频浏览,对讲,云台控制,参数查询设置等功能。
手机访问网络摄像机。
手机由于*台的不同,需要单独开发对应的客户端或者插件以实现和PC访问类似功能。但原理是一样的,都需要通过P2P服务器和该序列号 对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。由于开源的P2P穿透库是可以移植的,在LINUX,IOS,Android等都可以实现同样的P2P穿透功能。
关于具体的穿透的代码,需要的可以自行搜索,同时网上有第三方的穿透中间件服务。后面有附列表可以参考。穿透的核心是针对不同的网络环境,选择不同的策略。即明确设备处在的网络位置。这里涉及到一个概念NAT。
因为互联网中的IPv4地址不够用,于是引入了NAT功能。NAT,Network Address Translation,即网络地址转换。这种方法即在内部网和外网之间使用带有NAT功能的路由器,路由器能分配一个公网IP,内部的任意一台机器和外网通信时都通过这个公网IP。这样就很好的解决IP地址有限的问题。但问题随之而来,很多网络协议无法通过NAT,此时我们需要穿透NAT,即P2P穿透或者NAT穿透。
NAT穿透的前提是确定NAT类型,一般而言,NAT分为静态NAT和NAPT两种。静态NAT好理解,即一个内网IP对应一个公网IP。NAPT要复杂很多,NAPT即端口多路复用技术,不但需要转换IP地址,还需要进行传输层的端口转换。具体表现就是对外只有一个公网IP,通过不同端口来区分内网的不同设备数据。
实际运用中,NAPT占绝大多数。NAPT又可以分成4种类型,分别为:
- 完全锥型(IP地址,端口都不受限)
- 受限锥型(IP受限,端口不受限)
- 端口受限型(IP地址,端口都受限)
- 对称型(一个请求对应一个端口)
想要详细了解的可以参见文后的附录。
P2P访问的局限性
- 同一个设备,同时在线访问用户数量有限制。由于P2P穿透成功后是设备与客户端二者直接进行视频流传输的,因此,同时访问摄像机的用户数量会影响用户的观看体验。其一是因为摄像机本身的硬件性能不足于支持太多用户同时访问,其二是因为同时访问的人数多,摄像机端的上行带宽需求就会更大,普通家用宽带的上行速度很难支撑大量用户访问。所以一般厂商都会对于设备的同时访问用户数做限制。例如限制访问数为3个,超过这个数量的用户将无法进行实时预览。
- 穿透不成功,怎么办?任何P2P技术都不能保证100%穿透成功,对于不能成功穿透的,此时我们只能选择使用流媒体转发的方式。此种方式对于作为流媒体转发的服务器有一定的要求。
流媒体转发服务器要求
流媒体转发服务中,对服务影响较大的是网络带宽,内存与CPU次之。
服务器的配置推荐
序号 | CPU | 内存 | 系统 | 备注 |
---|---|---|---|---|
1 | 双核 2.4G | 4G | Win 2003/2008 32Bit | 支持同时在线观看500路。 |
2 | 双核 2.4G | 8G | Win 2003/2008 32Bit | 支持同时在线观看1000路。 |
3 | 八核 4G | 32G | Win 2003/2008 32Bit | 支持同时在线观看2000路。 |
网络带宽根据实时在线访问的设备数量来确定计算。如果用户对观看画面的标清与高清无要求的话可以降低设备的码流输出,以减轻带宽消耗。
WebRTC技术
使用WebRTC可以非常方便的以UDP方式实现P2P穿透,完美支持直连,穿透,转发三种方式,成功率很高。但是也有它的局限性。后面会专门介绍WebRTC技术,这里暂时提出来。
P2P远程访问不了如何排查
实际使用中,经常碰到P2P访问时,显示设备不在线,或者访问不了,我们应该如何排查解决呢?
首先关于网络设备能支持P2P访问的原理,我们最好了解下,这样才好从整体上把握理解导致P2P访问不了的原因,找到解决办法。
整个连接过程有3部分参加,前端设备,云端的*台服务器,后端的访问客户端,其中核心问题是前端设备能实现网络穿透,将视频流发送给客户端。发现云访问不了,我们就从这三个部分找问题,原因。
设备端
设备是否正确连接到了internet。设备通过网线接到交换机,或者路由器,路由器连上了外网。
可能存在的问题及排查方法:
- 外网是否正常,能上网。检查网线,设备对应的网口。局域网里的电脑或者手机能否上外网。
- 设备的网络参数设置是否正确。IP地址,子网掩码,网关,DNS设置和路由器里的配置是否一致。考虑IP地址是否冲突,设备网段是否相同。其中特别是设备的DNS,国内可以直接使用路由器里设备的DNS,国外用户推荐使用一些公共DNS,比如8.8.8.8。这样能方便设备较快的连接到部署在海外的较*的云服务器。
如果路由器有开启DHCP功能,可以尝试设备使用DHCP自动获取网络信息。
以上如果还是不能成功云访问,可以考虑修改设备的默认端口。主要是网页访问端口,数据传输端口和RTSP流媒体端口。
设备如果自带有网络,云访问检测功能,可以使用此功能检测找到问题。
重新设置或者修改网络参数以后,一般需要重启下设备。 - 设备是否支持P2P云访问功能,或者云访问功能是否开启了。另外设备的云功能是否有升级,需要升级新的设备固件。
云端的P2P云服务*台
这部分和用户无关,但是弄明白了能更好的理解P2P云功能,方便我们定位云访问不成功的问题所在。
看过上面介绍,应该不难理解,云服务*台主要起到前端设备与后端客户端之间联系的一个桥梁作用。云*台的稳定性,P2P穿透的成功率,连接的快捷性等都会影响用户P2P云访问的成功率以及体验。
稳定性,即考虑云*台的架构,物理安全,网络带宽,服务器的数量,性能,全球各地服务器部署,CDN加速等。
P2P穿透的成功率,即使用的P2P穿透技术是否可靠,穿透率是否高,适用不同网络环境。P2P穿透不成功是否有备选方案。比如某厂家当P2P穿透不成功时,使用视频流转发的方式来连接设备,这样能提高设备与客户端之间的连接成功率。(如果有更新P2P穿透库,设备固件及手机app要及时升级更新)
连接的快捷性,其实前面有提到,将设备的DNS修改成8.8.8.8,对国外用户,可能能较快的连接到就*的云*台。目前网络视频监控的厂家,包括一些提供第三方云访问*台的厂商基本是中国的,大部分P2P云*台服务器部署在国内,国内用户在使用P2P云功能时,感觉连接更快,更稳定可靠。这是我们在架设云*台时要考虑的,是否在全球主要国家地区部署服务器,CDN加速,优化网络,以方便当地用户更快的接入云*台。
客户端
访问端一般包括网页端,手机app,电脑客户端。能支持我们通过P2P的方式连接访问到前端设备。
一般在客户端出现问题的可能性很低。有这样几个方面需要注意:
- 及时更新手机app,电脑客户端,网页访问控件。
- 手机app。手机是否支持软硬视频解码,手机性能是否支持视频解码显示,是否赋予手机app相应权限等。
- 客户端是否连接到了外网。
摄像机P2P*台
常见的安防摄像机P2P*台(包括一些第三方*台)
NO. | APP | 开发者 | 系列号样式 |
---|---|---|---|
1 | XMeye,iCsee | 雄迈 | e3cddc089a825759 |
2 | EseeCloud3,VR CAM | 九安 | 1589902825 |
3 | seetong | 天视通 | 9847002 |
4 | Yoosee | 技威 | 3836362 |
5 | IPC360 | 普维 | 406A8E16CF73 |
6 | Danale | 大拿 | 44f5a7ebb1ee89853a7dcbac621b6249 |
7 | Goolink | 浪涛 | |
8 | UMeye | 华师大 | |
9 | p2pcamlive,P2PViewCam | TUTK | |
10 | V380 | 宏视 | |
11 | NVSIP | 中维世纪 | |
12 | YCC365 Plus/PixPlus | closeli | |
13 | i-Cam | uBia | |
14 | CareCam | HuiYun | |
15 | Tosee | Tocoding | |
16 | CamHi | CamHi | MMMM-102311-BDCCF |
17 | FINDCAM Max | ZScam | BYWDUJWZHZNS6MVR2YZA |
18 | Tuya | 涂鸦智能 | 6c97d7ef8fb7786972cvsg |
19 | YI IoT | YI | |
20 | 萤石云 | 海康威视 | |
21 | Imou Life | 大华 |
P2P穿透第三方中间件
提供P2P穿透第三方中间服务的*台
序号 | *台 |
---|---|
1 | peergine |
2 | pptun |
3 | houhangkeji |
4 | gizwits |
5 | vveye |
参考扩展阅读:
https://ipc.name/p2p/