海康威视8800平台级联问题

海康威视8800平台级联问题,第1张

请按下面方法进行级联一次:

一、下级平台配置 : 1、组织机构的添加首先,下级平台添加组织机构时,编码必须按照GB/T28181-2011或DB33-2011标准。方法:在添加组织机构时,单击“组织机构名称”右方的按钮。在弹出的界面中选择省、市、区等组织,可根据实际情况,选择任意级别的组织。保存组织机构之后可对组织的名称进行修改。添加监控区域时,监控区域的编号自动生成即可,不可人为修改,否则可能导致目录无法推送。对所有需要级联的区域,均要启用流媒体转发,否则上级平台无法预览到下级的视频。2、设备与监控点的添加 添加设备时要注意编号,系统自动生成即可,不可修改。 同样的,监控点的编号也不要修改,否则可能会导致监控点无法推送到上级平台。3、互联模块服务器的添加 在服务器TAB页中,先在左侧组织机构树中选择本级平台所在组织,例如“XX市”,然后单击页面上方的按钮,开始添加一个互联模块服务器。 服务器类型:互联模块服务器编号:自动生成即可,可以根据需要修改,不可以和组织编码相同。 IP地址:安装“联网网关-信令服务器”与“联网网关-媒体服务器”的服务器地址。若存在多网域,则需要配置多网域IP地址。其他配置信息默认即可。最后单击保存即可。4、联网网关配置。(1) 信令网关配置 在对应的级联服务器所在组织下,点击“网关配置”即可以登录到级联网关的配置界面。联网网关也可以通过“http://IP地址:7088”的地址打开。登录后在左侧菜单栏中选择“网关配置”—“信令网关”。 基本信息: 域标识:填写级联服务器的编号(请复制CMS中级联服务器的编码),且必须与上级平台中添加的下级域的信令网关编号一致。 IP地址:即安装“联网网关-信令服务器”的IP地址。 Sip端口、客户端端口、心跳时间、超时时间、MQPort默认即可。注意:Sip端口是GB28181平台之间通信的外部端口。 CMSIp:即本级平台CMS服务器的IP地址。 CMSPort:即本级平台CMS服务器的访问端口。 MQIp:即本级平台MQ服务器的IP地址(与本级平台CMS服务器IP一致)。高级选项: 控制端口、网管端口默认即可。 转发IP地址:“联网网关-媒体服务器”的IP地址,一般情况下与“联网网关-信令服务器”的IP地址一致。配置完成后单击保存。保存成功后,网关会自动重启。“备份数据库”与“清空数据库”的操作对象是联网网关的数据库,而非平台的数据库。 (2) 媒体网关配置登录联网网关配置界面后在左侧菜单栏中选择“网关配置”—“媒体网关”。 单击界面上方的按钮,弹出媒体网关配置界面。[媒体名称:可自定义 媒体IP地址:安装“联网网关-媒体服务器”的IP地址 媒体端口:7010 最大连接数:默认300],此参数根据测试得出的单台服务器最大能力,可以服务器建议配置为标准,降低此参数。 勾选配置详细信息可以对媒体网关的媒体信息进行详细的配置。 最后单击完成添加。 添加完成后在媒体网关的配置界面下会产生一条新的记录,“IP映射状态”中可以对网域信息进行配置,单网域情况下无需配置,系统会自动识别。但在多网域时必须正确的配置此参数,具体请参考下一章节的网络(多网域)设置。(3)网络设置 网络设置相当于iVMS-8800管理平台中参数配置中的网域的概念,当NCG存在多个网络环境时需要启用该功能,具体配置方法如下:登录联网网关配置界面后在左侧菜单栏中选择“网关配置”—“网络设置”。单击网络设置界面的左上方的“添加”按钮,弹出对应的网络设置界面。 信令网关对外地址:信令网络映射后IP地址媒体网关对内地址:媒体网关对内级联的IP地址媒体网关对外地址:媒体网关映射后对外的IP地址 点击“保存”后完成当前网域的网络设置,若需要再次增加网域时,则再次执行添加操作即可。完成网络配置还需要在网络设置界面中勾选“是否启用映射”选项,勾选后当前配置的多网域功能方可实现。单击勾选菜单后弹出提示信息,确定后完成网络设置功能。完成网络设置后,返回到媒体网关配置界面,点击媒体网关的名称,配置详细信息打钩,然后启用IP映射。 点击上图中之前配置的媒体网关信息中的“IP映射状态”下方对应的“启用”。弹出“设置IP映射”配置界面。点击上方的添加弹出对应信息配置界面 IP映射状态配置仅需在相对应的上级平台中配置下级平台的信息,下级平台无需配置。 下级域编码:下级域NCG编码 映射IP地址:上级NCG对下级平台的用于级联的IP。 点击“保存”完成配置。 5、联网配置 登录联网网关配置界面后在左侧菜单栏中选择“联网配置”—“上级域”。单击界面上方的按钮,添加一个上级域。信令网关名称:可自定义 信令网关编号:填写上级信令网关的域标识(需由上级提供)IP地址:上级级联网关的IP地址端口:上级级联网关的端口(默认为7100)级联协议:选择GB/T28181-2011或DB33-2011。是否开启鉴权:根据上级平台情况,若上级平台要求鉴权则勾选此选项,否则不用勾选。鉴权realm、鉴权登录名、鉴权密码:根据上级平台提供填写。上级NCG允许下级NCG接入的鉴权信息,必须与下级NCG请求接入上级NCG的鉴权信息一致。平台厂家类型:可根据实际填写。配置完成后会将级联信息同步到平台,可在系统配置—级联配置中查看到级联信息。6、资源管理 登录联网网关配置界面后在左侧菜单栏中选择“资源管理”—“资源共享”。 选择上级域,然后单击“共享资源”。 可在组织资源树上右键单击,在弹出的快捷菜单中选择“一键共享(全部)”,一次将所有的资源共享到上级平台,只有将资源共享后才能将目录推送到上级平台。也可以在资源树中逐级共享,即根据组织资源依次单击展开并勾选左侧组织资源后,单击后将资源共享。注意:共享资源时请逐级共享资源,不支持未共享父节点的情况下,直接共享子节点。 勾选右侧已共享的组织或者监控点,单击,即可取消资源共享。 下级资源共享到上级之后,在上级平台同样需要将资源共享到本级平台,否则在上级CMS无法看到下级共享上来的资源。在组织机构树中选择监控区域,右侧列出已共享的监控点,可针对这些监控点单个或者多个同时配置权限,权限类型包含实时预览、云台控制、录像查询与录像回放。勾选或者对应权限后单击后保存即可。

二、上级平台配置 1、 联网配置登录联网网关配置界面后在左侧菜单栏中选择“联网配置”—“下级域”。单击界面上方的按钮,添加一个下级域。 信令网关名称:可自定义 信令网关编号:填写下级信令网关的域标识 IP地址:下级级联网关的IP地址端口:下级级联网关的端口(默认为7100)级联协议:选择GB/T28181-2011或DB33-2011。是否开启鉴权:根据项目实际情况,选择是否需要启用,若上级平台启用鉴权,则下级平台也要启用鉴权。鉴权realm、鉴权登录名、鉴权密码:根据需要填写即可。平台厂家类型:可根据实际填写。 配置完成后会将级联信息同步到平台,可在系统配置—级联配置中查看到级联信息。2、 资源管理 登录联网网关配置界面后在左侧菜单栏中选择“资源管理”—“资源共享”。 选择本级域,然后单击“共享资源”。可在组织资源树上右键单击,在弹出的快捷菜单中选择“一键共享(全部)”,一次将所有的资源共享到本级平台,只有将资源共享后推送的目录才能在本级平台中显示。 也可以在资源树中逐级共享,即根据组织资源依次单击展开组织资源树后,单击后将资源共享。也可以单击再取消共享。注意: NCG往CMS共享资源时需要逐级共享,不支持未共享父节点的情况下,直接共享子节点。3、 组织机构的配置 目录推送成功之后,在组织资源中能够看到下级推送上来的资源。下级推送的资源在组织机构树中图标与本级资源的图标不同。为级联组织;为级联区域;为级联监控点。级联推送的区域默认没有启用流媒体转发,需要将启用流媒体转发勾选。 其余级联监控点的预览、回放等功能与普通监控点一致。

课程地址:零声学院 WebRTC入门与提高 https://ke.qq.com/course/435382?tuin=137bb271

技术支持QQ群:782508536

更多音视频知识请点击: 专注音视频开发

交互式连接建立是一种标准穿透协议,利用Stun和Turn服务器来帮助端点建立连接。市面上已有不少介绍ICE的资料,像《WebRTC权威指南(第三版)》中的“9.2 交互式连接建立”。但看了那些后,有人还是不能理解,这里试着用一个实例来描述整个过程。ICE协议只是制定规范,没规定怎么实现细节,在细节实现上这里参考Google的WebRTC。

上图就是《WebRTC权威指南(第三版)》中的图9.1。呼叫要交换两种信息,一是候选地址,二是媒体信息。候选地址用于建立网络连接,它存储着和网络连接相关的参数。媒体信息(SDP)用于描述要在对等连接上传输的数据,包括音频、视频和数据。用路和车来比喻的话,候选地址用于造路,媒体信息于用指定要跑什么车。

在图中,双方是串行处理媒体、候选地址,但实际中是并发的。举个例子,主叫收到Answer后,它仍可能在收集候选地址,然后通过信令服务器发向被叫。

除了主叫必须创建Offer才开始收集候选地址、被叫必须创建Answer才开始收集候选地址外,ICE代理是相互独立地处理媒体和候选地址。 (这结论细节参考底下的“四:选定候选地址,并启动媒体”)。

和“9.2 交互式连接建立”一样, 这里也把ICE分为六个步骤。下图是例子使用的网络拓扑结构。

<ignore_js_op style="word-wrap: break-wordcolor: rgb(68, 68, 68)font-family: Tahoma, Helvetica, SimSun, sans-seriffont-size: 14pxfont-style: normalfont-variant-ligatures: normalfont-variant-caps: normalfont-weight: normalletter-spacing: normalorphans: 2text-align: starttext-indent: 0pxtext-transform: nonewhite-space: normalwidows: 2word-spacing: 0px-webkit-text-stroke-width: 0pxbackground-color: rgb(255, 255, 255)text-decoration-style: initialtext-decoration-color: initial">

</ignore_js_op>

一:收集候选地址

候选地址是或许可用于接收媒体以建立对等连接的<IP地址, 端口>对,它分四种类型。

| 类型 | 别名 | 如何传给对端 | 用法 |

| 主机候选项 | host | 信令服务器 | 从网卡中获取的本地传输地址,如果此地址位于NAT之后,则为内网地址 |

| 服务器反射候选项 | srflx | 信令服务器 | 从发送给Stun服务器的Binding检查中获取的传输地址。如果此地址位于NAT之后,则为最外层NAT的公网地址 |

| 对端反射候选项 | prflx | Stun Binding请求 | 从对端发送的Stun Binding请求获取的传输地址。这是一种在连接检查期间新发生的候选项 |

| 中继候选项 | relay | 信令服务器 | 媒体中继服务器的传输地址。通过使用TURN Allocate请求获取 |

具体到例子,以下是此阶段将至少能收集到的候选地址。为简单,不再写A的IP2、B的IP2的服务器反射地址。

| 别名 | 类型 | 值 |

| A Cand2 | srflx | 211.161.240.181(raddr: 192.168.1.105) |

| A Cand1 | host | 192.168.0.204 |

| B Cand3 | host | 192.168.0.181 |

二:交换候选地址

A通过信令服务器把A Cand2、A Cand1、B Cand3发向A。对端收到一个候选地址后会做什么?深入它之前让引入两种对象:P2PTransportChannel、Connection。

ICE代理用P2PTransportChannel管理通道(Component)上的网络传输。什么是通道?Webrtc有个概念叫轨道(Track),常见有视频轨、音频轨,而要发送一条轨道中数据,最多可能使用两个通道,分别是Rtp、Rtcp。肯定会有Rtp,Rtcp则可选。一个P2PTransportChannel对应一条通道,如果当前会话要同时处理音频、视频,每条轨道又都包括Rtp、Rtcp,那会话中就存在四个P2PTransportChannel对象。P2PTransportChannel用维护一张连接状态表来管理网络传输,表中一条记录对应一个Connection对象。这里让具体到A的视频Rtp对应的P2PTransportChannel,看它在收到B Cand1后,P2PTransportChannel会向连接状态表新增两条记录,即两个Connection。这时已到通道,地址须是ip:port对。

| 本地网卡地址(Port) | 对端地址 | 状态 |

| 192.168.1.105:60001 | 192.168.0.204:40001 | 未进行过Stun检查 |

| 172.16.40.6:60003 | 192.168.0.204:40001 | 未进行过Stun检查 |

此时A不知道该用哪个网卡IP才能把数据成功发向192.168.0.204,于是它只要在有可能的地址对就创建Connection。注意Connection只会基于网卡IP,即host,因为对发送源来说,host才可能是源,其它的只是中间转换出的地址,像srflx。当然,创建时会放弃明显不可能的<网卡地址, 对端地址>对,举个例子,网卡地址是ipv4,而对端地址是ipv6。

当收全B Cand2、B$Cand3,状态表中就有6条记录。

| 本地网卡地址 | 对端地址 | 状态 |

| 192.168.1.105:60001 | 192.168.0.204:40001 | 未进行过Stun检查 |

| 172.16.40.6:60003 | 192.168.0.204:40001 | 未进行过Stun检查 |

| 192.168.1.105:60001 | 11.92.14.8:50002 | 未进行过Stun检查 |

| 172.16.40.6:60003 | 11.92.14.8:50002 | 未进行过Stun检查 |

| 192.168.1.105:60001 | 192.168.0.181:40003 | 未进行过Stun检查 |

| 172.16.40.6:60003 | 192.168.0.181:40003 | 未进行过Stun检查 |

表中有一条、或多条、或没有,能够把A的视频Rtp数据发向B的视频Rtp通道,到底怎么个可能性就要执行接下的Stun检查。

三:STUN检查

在状态表新建一条记录,即一个Connection,很快就会在此Connection上进行Stun检查。Stun检查具体操作是在此Connection上发Stun Binding请求。 由于要能支持Stun应答,每个ICE代理必须内置Stun服务器功能。 Stun检查具体步骤见下图。

<ignore_js_op style="word-wrap: break-wordcolor: rgb(68, 68, 68)font-family: Tahoma, Helvetica, SimSun, sans-seriffont-size: 14pxfont-style: normalfont-variant-ligatures: normalfont-variant-caps: normalfont-weight: normalletter-spacing: normalorphans: 2text-align: starttext-indent: 0pxtext-transform: nonewhite-space: normalwidows: 2word-spacing: 0px-webkit-text-stroke-width: 0pxbackground-color: rgb(255, 255, 255)text-decoration-style: initialtext-decoration-color: initial">

</ignore_js_op>

为什么说Stun检查会发现prflx候选项?假如A和Stun服务器之间连接状态不好,在它收到B发来的srflx(11.92.14.8)之后还没得出自个的srflx(211.161.240.181)。虽然A没得到自个的srflx,但这不妨碍对B的srflx这个候选地址进行Stun检查,于是会向11.92.14.8发Stun请求。B收到这个请求,从请求解析出211.161.240.181。虽然这个地址在值上等于A的srflx,但不是从信令服务器得到,而是来自对端的Stun请求。此时B就会以这个prflx向状态表新建Connection。

A在之后终于向Stun服务器拿到了自个的srflx,并通过信令服务器发向B。B发现这个srflx值对应的Connection已存在,就不会再创建了。

到此可得出个结论:两种原因会导致新建Connection,一是从信令服务器收到候选地址,二是Stun检查发现prflx。不同于从信令服务器得到地址而创建的Connection,Stun检查时创建的Connection一开始就基本能确定连接是畅通的。

四:选定候选地址,并启动媒体

P2PTransportChannel会维护连接状态表,并排序表中记录(SortConnectionsAndUpdateState)。排序指的是计算每条记录的连接“成本”,把成本最低的排在第一条。如何计算成本?这涉及到很多因素,比如发出Stun请求到收到应答经过了的时间,用时越少的“成本”自然会低些。

当A有视频Rtp数据要发送时,它检查状态表的第一条记录,如果判断出它的状态是发送就绪,就会用此Connection进行发送。否则直接放弃这个发送任务。 媒体模块在处理数据的采集、编码任务时,不用考虑候选地址方面进展怎样了,只是要到发送时才关注下,而即使不能发送也不会影响自个进度;同样,候选地址处理模块也不会关注媒体处理模块的进度。这正是之前写的一个结论:“除了主叫必须创建Offer才开始收集候选地址、被叫必须创建Answer才开始收集候选地址外,ICE代理是相互独立地处理媒体和候选地址”。

维护表任务包括新建、删除记录,以及修改记录中的状态字段。删除记录、修改状态都涉及到“长连接”。

五:长连接

为确保NAT映射和过滤规则不在媒体会话期间超时,ICE会不断通过使用中的候选项对发送Stun连接检查。具体到P2PTransportChannel,表现出来的是对状态表中所有记录隔段时间就要发送个Stun Binding请求。如果检测到本来是畅通的Connection上Stun应答超时了,那它就会更改该Connection状态,执行表排序时就有可能会向下掉,严重时会从状态表删除该记录。

一记录被删除后,如果之后那候选地址的连接又恢复了,则会基于该候选地址重新创建Connection。

六:ICE重新启动

分析长连接时,我们已能得出个结论,如果是网络拥堵或通断导致的状态表变化,P2PTransportChannel内部就能处理。但是,如果基地址发生改变,像一网卡被禁用,这就超出P2PTransportChannel可处理范围了,需重启ICE。

在WebRTC简介中提到信令服务器用于向中端传输数据,信令服务器是实现两个webRTC中端通信的重要角色。今天就来实现一下信令服务器。

作为前端开发对于后端的东西不是很熟悉,只能使用现成的一些服务器软件和nodejs来搭建信令服务器。

业务逻辑

当两个用户要进行通信时,他们首先要创建一个房间,成功加入房间之后,双方才能交换必要的信息。

当通信的双方结束通话后,用户需要发送离开房间的消息给信令服务器,此时信令服务器需要将房间内的所有人清除;如果房间里已经没有人了,还需要将空房间销毁掉。

这样的逻辑socket.io已经帮我们实现了,我们只需要使用就行,不需要自己重新开发。

因此,我们使用nodejs+express+socket.io实现信令服务器。

创建服务器

const http = require('http')//引入http库

const express = require('express')//引入express库

//创建HTTP服务,并侦听8980端口

const app = express()

const http_server = http.createServer(app)

http_server.listen(8080, '0.0.0.0')

1

2

3

4

5

6

7

1

2

3

4

5

6

7

首先,通过express创建一个Web应用;之后调用HTTP库的createServer()方法创建HTTP对象,即http_server;最后调用http_server对象的listen()方法侦听8080端口。通过上面的步骤就实现了一个HTTP服务。

注册socket.io的回调函数

io.sockets.on('connection', (socket) =>{

//收到message时,进行转发

socket.on('message', (message) =>{

//给另一端转发消息

socket.to(room).emit('message', message)

})

//收到 join 消息

socket.on('join', (room) =>{

var o = io.sockets.adapter.rooms[room]

//得到房


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/515251.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-19
下一篇2023-06-19

发表评论

登录后才能评论

评论列表(0条)

    保存