系统管理员(登录名:system)登录ICC平台
登录ICC平台,右上角点击"OpenAPI",再点击申请访问凭证
输入clientId,生成clientSecret
刷新平台首页/重新登录ICC平台,再次点击“OpenAPI”申请
密码认证
请求头需设置Authorization;格式:token_type + 空格 + access_token ;示例 bearer 1:704dc1bc-b05e-4ed5-a889-0261584919f6
需做保活,token有效期默认2小时,刷新token有效期是30分钟,建议每隔四分钟做一次保活并刷新token
客户端认证
请求头需设置Authorization与User-Id;
Authorization与密码认证一致,格式:token_type + 空格 + access_token ;示例 bearer 11332233-b05e-4ed5-a889-0261584919f6
User-Id 默认是1
token有效期2小时
请求头Authorization未设置,请参考协议鉴权
请求头Authorization过期,调鉴权认证接口重新获取
ICC框架是5.0.6及之前版本clientId、clientSecret均写死web_client
ICC5.0.8及以上支持单点登录,5.0.8之前版本需定制
鉴权认证必须是用户密码鉴权模式
框架自带页面(基础框架子系统:基础资源、事件中心、地图、日志管理等)和首页支持单点登录,业务子系统页面不支持
页面地址URL上#号之前加上token与refreshToken,如果页面地址URL有参数,需将参数移到#号之前,与token一起请求
页面地址URL无参数
例如访问ICC平台首页:https://10.35.239.203/#/home
token与refreshToken是用户密码鉴权模式返回的数据
单点登录页面地址:https://10.35.239.203/?token=1:8ca5cae1-0fd0-4147-999a-8871fb390c13&refreshToken=81ec9edd-a81c-473b-8a9e-22f425bc75de#/home
页面地址URL有参数
例如访问基础资源管理页面:https://10.35.239.203/bResource/#/recombination?uniqueMenuCode=COMBINATION_BASICRESOURCEMANAGER
token与refreshToken是用户密码鉴权模式返回的数据
单点登录页面地址:https://10.35.239.203/bResource/?token=1:8ca5cae1-0fd0-4147-999a-8871fb390c13&refreshToken=81ec9edd-a81c-473b-8a9e-22f425bc75de&uniqueMenuCode=COMBINATION_BASICRESOURCEMANAGER&#/recombination
如何获取页面URL
a. 首先登录平台,进入对应页面
b. 鼠标右键,点击“检查”
c. 根据当前元素找到上一层带有iframe的元素,其中的地址就是URL
1、修改/opt/evo/evo-common/evo-apigw/config/application.properties 文件中 evo.token.access.check由true改为false
2、重启api网关
sh /opt/evo/evo-common/evo-apigw/bin/start.sh
RSA加密错误导致的
RSA公钥格式x.509
java RSA加密参考如下代码
byte[] decoded = Base64.decode(publicKey);
RSAPublicKey pubKey =(RSAPublicKey)KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));// RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String outStr = Base64.encode(cipher.doFinal(str.getBytes("UTF-8")));//outStr为加密密文
格式:https://<平台IP>:<平台端口>/URI
平台IP:ICC平台的ip,部署在现场的服务器ip,非ICC开放平台地址
平台端口:ICC平台的端口,默认443
URI:接口URL,格式:evo-apigw/子系统应用名/版本号/URI
evo-apigw:固定值,网关服务
子系统应用名:子系统应用名,一般是evo-xxx开头,视频(admin)、停车场(ipms)、可视对讲(vims)除外
版本号:子系统版本号,一般固定不变,部分子系统没有版本号概念
URI:子系统资源地址
示例:https://10.35.239.168/evo-apigw/evo-oauth/1.0.0/oauth/public-key
- 接口地址中带有evo-apigw的地址不支持跨域,前端无法直接调用
- 推荐处理:三方前端调用三方后端,三方后端请求ICC开放接口
- 不推荐前端直接代理,因为接口鉴权的用户名密码会写死在前端不安全,前端代理无法对接事件订阅实时推送
- 尤其是对接视频拉流时需要三方后端转发接口,对接不只是前端研发小伙伴的事情
- 接口协议是http还是https
答复:ICC接口默认https协议;http默认不支持,需运维中心开启后支持,默认端口是83。- 端口是否正确
答复:ICC端口默认是443,运维中心开启http调试模式后,端口为83;- 请求方式是否正确
答复:POST、PUT、DELETE、GET需与对应接口文档中的请求Method对齐。- 请求Content-Type是否正确
答复:除上传照片接口是POST,Content-Type为mutipart/form-data外,其他接口POST、PUT、DELETE的Content-Type均为application/json格式;
GET请求拼接URL参数访问。- 检查参数类型是否正确
答复:参数类型需与接口文档中的请求参数保持一致- 检查参数是否合法
- 服务器日志排查
ICC可以根据URL:https://{{host}}/evo-apigw/xxx/{{version}}中的xxx查询/log/xxx/xxx.log文件,查看具体错误信息
系统异常,请检查下请求方式、请求类型、请求参数 若还未解决,需查看服务器日志,可由区域同事配合,按照接口问题排查步骤排查
- 检查子系统是否安装
可通过地址:http://<平台IP>:8916/evo-discover/1.0.0/srd/subsystem 判断安装了哪些子系统- 1.0.0子系统版本号是否正确
- 若参数作为URL的一部分,参数非必填,也请保证非必填参数字段存在
例如地址:/evo-apigw/pmms/real/data/nodeId={nodeId}&devChildType={devChildType}&pageNo={pageNo}&pageSize={pageSize}
pageNo非必填,请求地址也需带上此参数如:/evo-apigw/pmms/real/data/nodeId=001&devChildType=1801&pageNo=&pageSize=20
检查数据提交格式(ContentType)是否正确,
检查数据类型是否合法
ICC默认是https请求,将http改为https
升级最新的API网关(evo-apigw)
业务接口对接需开通443端口,开启http调试模式需开通83
HLS拉流需开通7086(http)、7096(https)端口
RTSP拉流需开通9090(MGW服务)、9100(实时流)、9320(录像回放)端口
FLV拉流需开通7886(http)、7896(https)端口
RTMP拉流需开通1975端口
设备主动注册开通9500端口
调用https接口会进行SSL安全验证,现场安装的icc平台默认没有安全证书,需在代码中忽略SSL安全验证才能进行接口调用
以下是java忽略安全验证的代码示例:
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
public class IgnoreSSLUtil {
public static void main(String[] args) {
try {
// 创建一个信任所有证书的 SSL 上下文
SSLContext sslContext = new SSLContextBuilder()
.loadTrustMaterial(null, (chain, authType) -> true)
.build();
// 创建一个忽略主机名验证的 SSL 连接套接字工厂
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
// 创建 HttpClient
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.build();
// 创建 ClientHttpRequestFactory
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
// 创建 RestTemplate 并设置请求工厂
RestTemplate restTemplate = new RestTemplate(requestFactory);
// 准备请求头
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/json");
headers.set("Authorization", "bearer 3:WBuk0zLe1rRMsFI47Uljvwcs5BGqsfsD");
// 准备请求体
String requestBody = "{\"pageNum\":1,\"pageSize\":10}";
// 创建 HttpEntity 对象
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
// 调用 POST 接口
String url = "https://10.55.30.71:443/evo-apigw/evo-brm/1.0.0/device/subsystem/page";
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
// 输出响应内容
System.out.println("Status Code: " + response.getStatusCode());
System.out.println("Response Body: " + response.getBody());
} catch (NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
若是其他语言调用https接口,请网上搜索对应语言的忽略SSL安全验证代码
a.照片需要小于4M
b.照片大小推荐 500*500
c.图片格式JPG、JPEG、PNG
d.人脸无遮挡(如戴帽子、口罩、眼镜等)、无修图
e.人脸需双眼睁开、表情自然、露额,头发不要遮挡
图片拼接格式有三种方式,分别是OSS方式、停车场方式、交通卡口方式,分别对应不同的子系统
OSS方式为通用图片访问方式,由于历史遗留问题,不兼容停车场方式与交通卡口方式,参考以下OSS方式
停车场方式是从7016平台衍生过来的,复用7016图片拼接方式,仅适用于停车场(ipms)模块,参考以下停车场方式
交通卡口方式是交通卡口子系统图片专门拼接方式,仅适用于交通卡口(evo-car)模块,参考以下交通卡口方式
开启http调试模式格式:http://<平台IP>:<调试端口>/evo-apigw/evo-oss/URI?token=access_token
https示例:
适用于停车场子系统图片拼接方式
接口返回图片url带有fileUrl关键字的拼接说明如下所示:
格式:https://<平台IP>:<平台端口>/evo-apigw/URI
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
URI:停车场过车/车辆进出返回图片地址,支持的字段有originalPicPath、realCapturePicPath字段
示例:
原始图(originalPicPath字段):/ipms/imageConvert/originalImage?fileUrl=http%3A%2F%2F10.35.239.131%3A8082%2Fd%2F1000022%241%240%240%2F20210712%2F15%2F1646-1430-0.jpg
原始图示例:https://10.35.122.144/evo-apigw/ipms/imageConvert/originalImage?fileUrl=http%3A%2F%2F10.35.239.131%3A8082%2Fd%2F1000022%241%240%240%2F20210712%2F15%2F1646-1430-0.jpg
缩略图(realCapturePicPath字段):/ipms/imageConvert/image?fileUrl=http%3A%2F%2F10.35.239.131%3A8082%2Fd%2F1000022%241%240%240%2F20210712%2F15%2F1646-1430-0.jpg
缩略图示例:https://10.35.122.144/evo-apigw/ipms/imageConvert/image?fileUrl=http%3A%2F%2F10.35.239.131%3A8082%2Fd%2F1000022%241%240%240%2F20210712%2F15%2F1646-1430-0.jpg
接口返回图片url未带有fileUrl关键字的拼接说明如下所示:
方式一:/d前面的部分替换为http://<图片转发服务IP>:9480/
图片转发服务IP:默认ICC平台IP,若现场有分布式,为图片转发服务IP
示例:
URI:9101/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
完整地址:http://10.35.122.144:9480/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
此方式是http访问,端口是9480
方式二:在方式一组装好的基础上,再拼接https://<平台IP>:<平台端口>/evo-apigw/<原始图>或<缩略图>?fileUrl=urlencode(方式一图片地址)
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
原始图:固定值:imageConvert/originalImage
缩略图:固定值:imageConvert/image
例如方式一组装的完整地址是:http://10.35.122.144:9480/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
方式一地址做urlencode
原始图完整地址:https://10.35.122.144/evo-apigw/ipms/imageConvert/originalImage?fileUrl=http%3A%2F%2F10.35.122.144%3A9480%2Fd%2F1000065%241%240%240%2F20221202%2F13%2F5021-187-0.jpg
缩略图完整地址:https://10.35.122.144/evo-apigw/ipms/imageConvert/image?fileUrl=http%3A%2F%2F10.35.122.144%3A9480%2Fd%2F1000065%241%240%240%2F20221202%2F13%2F5021-187-0.jpg
适用于交通卡口子系统图片拼接方式
格式:https://<平台IP>:平台端口/evo-apigw/evo-oss/URI
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
URI:交通卡口过车记录返回图片地址
示例:
URI:13001/d/1001271$1$0$0/20230419/15/5947-28081-0.jpg?streamID:84@capTime:1681891189
完整地址:https://120.203.76.42:4431/evo-apigw/evo-oss/13001/d/1001271$1$0$0/20230419/15/5947-28081-0.jpg?streamID:84@capTime:1681891189
代码:参考示例
图片质量检测没有授权,需要联系大华售中烧制图片质量检测服务加密狗
通道编码格式:设备编码$单元类型$单元序号$通道序号
设备编码:设备编码7位数字,系统自动生成
单元类型:单元类型即通道类型
单元序号:单元序号
通道序号:通道号,从0开始
示例:1000006$1$0$1
常见单元类型:视频通道:1、门禁通道:7、道闸通道:14
组织:以真实世界为参考,通过逐层关系,体现设备在平台软件的所在地理位置;组织设备挂钩。
部门:以公司、政企等通过人为定义形成的逻辑从属关系;部门人员挂钩。
部门与组织两个都是层级展示,处理的对象不同
部门是与人员关联的,部门权限校验的是人员,根部门节点为1
组织是与设备关联,组织权限主要校验的是设备与通道,根组织节点为001
基础组织主要处理平台相关业务
逻辑组织主要用于展示,无实际业务场景,是基于基础组织创建的
设备是通过平台->设备管理添加到平台上的
通道则是设备一部分集成到平台上,设备与通道一对多关系
摄像头作为设备添加到平台,为设备,设备编码七位数字 摄像头(IPC)作为NVR一部分集成到平台,此摄像头则为通道,通道是带有$符号标识
停车场的车辆管理与基础资源中车辆管理,后端数据是互通的。基础资源的车辆管理以业务中台形式存在,方便各个业务系统使用,与业务关联性比较小。停车场业务闭环完整,在停车场业务系统中结合业务需要,做了另一个车辆管理的入口。
基础应用->车辆管理数据存在基础应用evo-brm,停车场->车辆管理数据保存在停车场ipms
双方数据都会同步,区别在于停车场->车辆管理信息较与基础应用多,例如场区字段
基础应用->车辆管理可通过事件中心 订阅业务事件,具体参考附录->事件列表->基础事件->车辆实时消息
调用接口:通道分页查询
根据unitTypeList过滤,枚举参考单元类型
查询视频通道unitType=1,查询门禁通道unitType=7,查询道闸通道unitType=14
以下是同时查询视频、门禁和道闸通道请求报文如下:
{
"pageNum": 1,
"pageSize": 10,
"unitTypeList":[1,7,14],
"includeSubOwnerCodeFlag":true
}
wgs84(地心坐标系)
报警输入输出是相对于设备本身来说的
报警输入通道:外围探测器可以通过输入通道将io信报给设备
报警输出通道:是通过设备的报警输出通道控制外围设备,比如输出控制灯光,门禁等
基础组织从右侧减3位,为父节点,例如001001、001002的父节点是001,001002001的父节点为001002
级联组织从右每次减3位,遇到字母减6位就是父节点
获取父节点代码示例如下
if (orgCode.length() == 3){
return "" ;
}
String pid = orgCode.substring(0,orgCode.length()-3) ;
if(pid.length()<3){
throw new BusinessException(ORG_NOT_EXIST);
}
char a = pid.charAt(pid.length() - 3) ;
if('a' <= a && a <= 'j' ) {
pid = pid.substring(0,pid.length()-3) ;
}
return pid ;
设备的通道能力用32位二进制字符串表示。
每一位代表一种能力,1表示有,0表示没有。
能力说明,从右往左依次说明
位数 | 含义 |
---|---|
第1位 | 智能报警 |
第2位 | 鱼眼 |
第3位 | 电动聚焦 |
第4位 | 红外测温 |
第5位 | 热度图统计 |
第6位 | 过线统计 |
第7位 | 区域人数统计 --- 用于滞留 |
第8位 | 人脸检测 |
第9位 | 人员识别 |
第10位 | 目标抓拍 |
第11位 | 主从跟踪 |
第12位 | 出入口抓拍 |
第13位 | AR |
第14位 | 多区域人数统计-用于AI鱼眼多区域统计 |
第15位 | 雷球联动 |
第16位 | 行为分析 |
第17位 | 云台控制 |
第18位 | - |
第19位 | 扬声器 |
第20位 | 智能算法升级 |
第21位 | MAC采集 |
第22位 | 自定义定时抓图 |
第23位 | 人脸开门 |
第24位 | 工装检测 |
第25位 | 人脸质量检测 |
第26位 | 人脸相似度比对 |
第27位 | 客流定时订阅 |
第28位 | 人脸分析 |
第29位 | AR后端打标 |
第30位 | AR广角180° |
第31位 | AR广角360° |
subsystemType固定值0
monitor字段默认长度80,格式要求POST方式,请求类型:application/json
magic取值规则:取monitor中的ip与端口,通过ip_端口拼接
权限组信息authorities、types、orgs、nodeCodes字段不送,订阅所有,空数组不订阅
事件订阅推送无重试机制
category为alarm时,types参考ICC平台-报警类型中的报警编码
category为business时,types为各个子系统自定义字段,详细参考附录->事件类型->业务类型
通用消息体格式参考 API文档-事件中心-通用事件格式
其中info代表具体业务消息
报警事件参考通用报警格式
业务事件参考通用业务信息格式
通用设备状态事件参考通用设备状态格式
感知消息事件参考感知消息
扩展信息extend每个模块每个设备推送不完全相同,以实测为准
- 事件订阅送的URL(monitor)在ICC服务器上必须telnet通,可通过命令wget ip:端口验证
- 报警事件则查看ICC平台-事件查询页面是否存在记录,非报警记录跳过
- 查看推送日志,日志文件:/log/evo-event/evo-event_track.log
根据回调监听地址搜索evo-event_track.log
查看关键字703019行数,带有请求的一行为请求入参,带有返回一行为返回日志
若回调地址网络链接报错,会有日志打印- ICC服务器上尝试curl命令看下报错信息
命令:curl -i -X POST -H 'Content-type':'application/json' -d body体 回调地址url
https示例:
curl -i -X POST -H 'Content-type':'application/json' -d '{"category":"state","info":{"syncChannelStatus":"1","subSystemName":["client1669947203469.1"],"updateTime":"2022-12-03 17:55:02.664","version":18,"channelId":"1000100$1$0$0","status":"2"},"method":"node.status","subsystem":"admin","uuid":"state_3ad3851b1bc84965bfb7598cb59a6240_1670061302669"}' -k --insecure https://10.55.36.202/evo-apigw/evo-oauth/1.0.0/oauth/extend/token
http示例:
curl -i -X POST -H 'Content-type':'application/json' -d '{"category":"state","info":{"syncChannelStatus":"1","subSystemName":["client1669947203469.1"],"updateTime":"2022-12-03 17:55:02.664","version":18,"channelId":"1000100$1$0$0","status":"2"},"method":"node.status","subsystem":"admin","uuid":"state_3ad3851b1bc84965bfb7598cb59a6240_1670061302669"}' http://10.55.36.202:83/evo-apigw/evo-oauth/1.0.0/oauth/extend/token
- 若是域名解析异常,报UnknownHostException: xxx异常
域名仅内网访问时,配置下host,命令:vi /etc/hosts
域名外网可访问时,ICC服务器需开通外网访问,自动解析域名
java语言接收,确定下是否为框架层面拦截器拦截
c#语言接收,确定下是否是异步接收处理机制,虽然进入方法,数据还未完全接收成功
python语言接收,考虑用json.dumps(消息体)兼容body体非严格json格式情况
支持,服务要求post 、application/json格式
xx设备能否触发哪些报警,参考ICC平台-报警预案,添加预案、选择相应的报警源类型即可
事件订阅推送流程:设备->...->mq->平台->第三方
平台->第三方推送异常:无重试机制(平台服务异常、网络不通)
mq->平台推送异常:会根据mq重试机制推送(平台问题)
报警类型300到1000和15500到17500都是智能报警,携带图片的
其他报警都不带图片,要图片,就只能通过配置报警预案联动抓图
智能报警抓图通道能力级需勾选智能报警
报警类型 | 设备事件code码 | 描述 | 触发机制 |
---|---|---|---|
881 | FireWarning | 火情事件 | 当热成像通道检测到有火情时,会产生报警;且设备勾选抓图选项 |
5121 | FireWarning | 热成像着火点报警 | 当热成像通道检测到有火情时,会产生报警;且设备不勾选抓图选项 |
5122 | FireWarningInfo | 火情报警信息更新,在firewarning的start,stop之间不停间隔更新 | 当火情检测事件未消失或者中断时,会不断更新火情报警信息。 |
协议类型 | 拉流方式 | 端口 | 说明 |
---|---|---|---|
http | hls | 7086 | 实时流与回放流共用一个端口 |
https | hls | 7096 | 实时流与回放流共用一个端口 |
http | flv | 7886 | 实时流 |
https | flv | 7896 | 实时流 |
rtmp | rtmp | 1975 | 实时流回放流共用一个端口 |
rtsp | rtsp | 9100,9320 | 实时流/语音对讲端口:9100,录像回放端口:9320 |
ws | websocket | 9100,9320 | 实时流端口:9100,录像回放端口:9320 |
wss | websocket | 9102,9322 | 实时流/语音对讲端口:9102,录像回放端口:9322 |
方式1.登录ICC客户端,实时预览功能,如下图
方式2:登录设备web端,以大华设备为例,浏览器输入设备ip,并输入设备用户名密码,如下图所示
方式3:vlc播放查看流媒体信息,如下图所示
第一步:登录ICC服务器后台,编辑PCPS.xml,命令:vim /opt/dss/PCPS/PCPS.xml
第二步:修改标签StreamConvertor由0改为1,vim保存(命令:退出编辑(Esc),再执行(:wq)保存)
第三步:查看进程,命令:pidof PCPS,如下图
第四步:重启PCPS。杀掉第三步中的进程id,PCPS服务会自动重启,如第三步进程id,命令:kill -9 9730
以上步骤仍无法解决,登录设备将视频类型由复合流改为视频流,保存重启
1、检查通道是否离线,必须在线才能播放
例如HLS流地址:http://172.7.2.110:7086/live/cameraid/1000158%2499/substream/1.m3u8?token=1:2cfa8e9b-e6c7-44d1-a676-6ae1cb9971e0
平台web端 设备管理-》通道tab页 搜索1000158$1$0$99是否在线
2、7086(http)、7096(https)端口必须通
3、默认必须拼接token,token有效期2h;
若取消token拼接,参考HLS/FLV/RTMP取消拼接token配置,不拼接token播放hls容易造成安全泄露,请知悉
4、HLS默认不支持友商私有协议接入,推荐通过国标、onvif接入;如需支持请参考友商设备无法播放尝试配置配置
5、设备编码模式推荐H264
多数在对接场景中web端播放是最多的,浏览器不支持H265
vlc播放器可播放H265
6、HLS流地址播放是否是404(找不到资源),404解决参考HLS播放资源找不到
验证404简单方法1:浏览器地址栏输入流地址,报404或网页找不到之类错误,浏览器提示下载文件说明流地址正确
验证404简单方法2:播放客户端抓包7086,抓包分析
7、https访问需导入安全证书,配置ngnix,参考拉流https配置
实时流排查步骤如下:
1、MES服务器配置检查
打开MESConfig.xml;vi /opt/dss/EIMedia/MESConfig.xml
修改配置项ProcessRedirect;将ProcessRedirect改为true,保存
重启MES服务
查看MES进程:pidof mes
杀掉MES进程:kill -9 MES 进程
2、MGW服务是否正常启动,9090端口是存在
3、服务器抓包7086、9090、9000包,重点检查9000端口
根据9000端口与通道编码过滤,查看返回信息是否包含rtsp流地址信息,不包含说明evo-admin服务有问题(一般是级联设备支持的不好),需提供抓包与admin日志给研发分析
录像回放流排查步骤如下:
1、流地址中的begintime与endtime是否存在录像,在客户端上播放这个时段录像是否正常
比对录像信息是否正确:根据是否是报警录像调查询普通录像信息列表|查询报警录像信息列表接口
再根据前一步的录像信息比对HLS流地址中的begintime、endtime、substream、recordType是否一致
HLS流地址中的begintime与endtime必须在录像信息中的starttime与endtime的闭区间内(录像不支持跨文件播放,需注意)
substream与流地址是否一致
recordtype:中心录像:1表示普通录像;2表示报警录像;81表示补录录像;82表示报警预录录像;设备录像固定:0;中心录像可尝试切换1、2、81、82看看是否可以播放
3、服务器抓包7086、9090、9000包,重点检查9000端口
根据9000端口与通道编码过滤,查看返回信息是否包含rtsp流地址信息,不包含说明evo-admin服务有问题(一般是级联设备支持的不好),需提供抓包与admin日志给研发分析
1、检查通道是否离线,必须在线才能播放
例如FLV流地址:http://172.7.2.110:7886/live/cameraid/1000158%2499/substream/1.flv?token=1:2cfa8e9b-e6c7-44d1-a676-6ae1cb9971e0
平台web端 设备管理-》通道tab页 搜索1000158$1$0$99是否在线
2、7886(http)、7896(https)端口必须通
3、5.0.12及以上版本必须拼接token,token有效期2h等;5.0.12之前版本则跳过此步骤;
5.0.12版本若取消token拼接,参考HLS/FLV/RTMP取消拼接token配置,不拼接token播放flv容易造成安全泄露,请知悉
4、FLV默认不支持友商私有协议接入,推荐通过国标、onvif接入;如需支持请参考友商设备无法播放尝试配置配置
5、设备编码模式必须H264
6、FLV流地址播放是否是404(找不到资源),404解决参考FLV播放资源找不到
验证404简单方法1:浏览器地址栏输入流地址,报404或网页找不到之类错误
验证404简单方法2:播放客户端抓包7086,抓包分析
7、https访问需导入安全证书,配置ngnix,参考拉流https配置
实时流排查步骤如下:
1、MGW服务是否正常启动,9090端口是存在
2、服务器抓包7886、9090、9000包,重点检查9000端口
根据9000端口与通道编码过滤,查看返回信息是否包含rtsp流地址信息,不包含说明evo-admin服务有问题(一般是级联设备支持的不好),需提供抓包与admin日志给研发分析
1、检查通道是否离线,必须在线才能播放
例如RTMP流地址:rtmp://10.35.239.168:1975/live/cameraid=1001337%2426;substream=1;token=1:2cfa8e9b-e6c7-44d1-a676-6ae1cb9971e0
平台web端 设备管理-》通道tab页 搜索1001337$1$0$26是否在线
2、1975端口必须通
3、5.0.12及以上版本必须拼接token,token有效期2h等;5.0.12之前版本则跳过此步骤;
5.0.12版本若取消token拼接,参考HLS/FLV/RTMP取消拼接token配置,不拼接token播放flv容易造成安全泄露,请知悉
4、RTMP默认不支持友商私有协议接入,推荐通过国标、onvif接入;如需支持请参考友商设备无法播放尝试配置配置
5、设备编码模式必须H264
6、服务器抓包1975、9090、9000包,重点检查9000端口
根据9000端口与通道编码过滤,查看返回信息是否包含rtsp流地址信息,不包含说明evo-admin服务有问题(一般是级联设备支持的不好),需提供抓包与admin日志给研发分析
7、录像回放流排查步骤如下:
7.1、流地址中的begintime与endtime是否存在录像,在客户端上播放这个时段录像是否正常
7.2、比对录像信息是否正确:根据是否是报警录像调查询普通录像信息列表|查询报警录像信息列表接口
7.3、再根据前一步的录像信息比对HLS流地址中的begintime、endtime、substream、recordType必须一致
HLS流地址中的begintime与endtime必须在录像信息中的starttime与endtime的闭区间内(录像不支持跨文件播放,需注意)
substream与流地址是否一致
recordtype:中心录像:1表示普通录像;2表示报警录像;81表示补录录像;82表示报警预录录像;设备录像固定:0;中心录像可尝试切换1、2、81、82看看是否可以播放
第一步:第三方提供安全证书,证书格式需ngnix格式;证书参考示例说明
第二步:ssh登录ICC后台,切root用户操作
第三步:同步证书到流媒体服务命令
HLS参考如下
1> mv /opt/dss/EIMedia/pempath/cacert.pem /opt/dss/EIMedia/pempath/cacert_backup.pem
2> mv /opt/dss/EIMedia/pempath/privkey.pem /opt/dss/EIMedia/pempath/privkey_backup.pem
3> cp /opt/3rdtool/nginx/ssl/service.pem /opt/dss/EIMedia/pempath/cacert.pem
4> cp /opt/3rdtool/nginx/ssl/service_unsercure.key /opt/dss/EIMedia/pempath/privkey.pem
5> pidof mes
6> kill -9 第5步进程号
FLV参考如下
1> mv /opt/dss/EIFLV/pempath/cacert.pem /opt/dss/EIFLV/pempath/cacert_backup.pem
2> mv /opt/dss/EIFLV/pempath/privkey.pem /opt/dss/EIFLV/pempath/privkey_backup.pem
3> cp /opt/3rdtool/nginx/ssl/service.pem /opt/dss/EIFLV/pempath/cacert.pem
4> cp /opt/3rdtool/nginx/ssl/service_unsercure.key /opt/dss/EIFLV/pempath/privkey.pem
5> pidof flv
6> kill -9 第5步进程号
https地址播放示例说明
HLS 示例说明
配置前拉流地址:https://10.35.239.168:7096/live/cameraid/1001338%240/substream/1.m3u8
配置后拉流地址:https://证书域名:7096/live/cameraid/1001338%240/substream/1.m3u8
FLV 示例说明
配置前拉流地址:https://10.35.239.168:7896/live/cameraid/1001338%240/substream/1.flv
配置后拉流地址:https://证书域名:7896/live/cameraid/1001338%240/substream/1.flv
第一步:第三方提供安全证书,证书格式需ngnix格式;证书参考示例说明
第二步:ssh登录ICC后台,切root用户操作
第三步:同步证书到流媒体服务命令
ICC5.0.12及以上版本才支持修改
HLS/RTMP配置修改
编辑命令:vi /opt/dss/EIMedia/MESConfig.xml,将SRDEnable标签改为false
重启MES服务
查看MES进程:pidof mes
杀掉MES进程:kill -9 MES 进程
FLV配置修改
编辑命令:vi /opt/dss/EIFLV/FLVConfig.xml,将SRDEnable标签改为false
重启FLV服务
查看FLV进程:pidof flv
杀掉FLV进程:kill -9 FLV 进程
设备编码模式为H265,改成H264、H264B、H264H
切换码流类型
重启设备、MTS、MES
打开MESConfig.xml;vi /opt/dss/EIMedia/MESConfig.xml
修改配置项RTPStd;将RTPStd改为false;
修改配置项LHLSEnable;将LHLSEnable改为true;
重启MES服务
查看MES进程:pidof mes
杀掉MES进程:kill -9 MES 进程
1、保证客户端正常播放
2、接口方式获取流地址
2.1 端口9100(实时流)、9320(录像回放)对应端口必须通,用telnet ip 端口命令检测,例如rtsp 实时流拉流:telnet 101.155.26.33 9100
2.2 rtsp流地址需拼接上"?token=xxx",token为获取流地址接口返回token,非鉴权接口的access_token
2.3 插件播放运行9090端口流地址时,插件需手动开启支持重定向
2.4 插件播放运行vue2_Version demo 需要修改demo.vue中的pathList中的redirect配置,重定向配置作为入参送false,重新编译运行
2.5 VLC不能播放,提示输入用户名密码,流地址后面需加上trackID=0
2.6 2.5仍不能播放,请设置下VLC播放器:工具-》偏好设置-》输入/编解码器下的live55流传输下RTP over RTSP(TCP)项
3、拼接方式获取流地址
3.1 9090(MGW)、9100(实时流)、9320(录像回放)端口通,用telnet ip 端口命令检测,例如rtsp 实时流拉流:telnet 101.155.26.33 9100
3.2 VLC播放是否正常
3.3 插件播放需拼接"?trackID=701",
3.4 内外网拉流需改MTS配置,调整内外网映射加载优先级,默认支持内网,不支持双网卡
实时流配置
a.打开MTS.xml:vi /opt/dss/MTS/MTS.xml
b.修改带有RtspUrlAddr的标签,将外网设置默认加载即外网ip:端口 ,内网ip:端口
c.重启MTS服务
录像回放流配置
a.打开SS.xml:vi /opt/dss/SS/SS.xml
b.修改带有RtspUrlAddr的标签,将外网设置默认加载即外网ip:端口 ,内网ip:端口
c.重启SS服务
参考API文档-视频应用-录像回放-获取普通/报警录像接口返回报文,根据字段对应即可,无需关心含义
先获取录像信息->根据录像信息调用获取流地址接口(返回录像列表)->客户端播放
录像是不能跨文件播放的,因此需要先获取录像信息
根据录像信息调获取录像回放流地址
用客户端播放流地址,多个流地址处理:监听录像播放结束时间,继续播放下一个
球机设备
枪机设备必须勾选云台控制能力级
客户端鉴权模式需要在headers上添加参数User-Id为1
通道编码是否存在
1、通道是否真实存在
2、此鉴权用户是否有此视频通道权限,根据此用户登录ICC平台查看设备管理-》通道tab页
body参数json格式化后试一下:可能入参可能存在看不到的转义符
原因:token过期报401错误,排查步骤如下:
1、查看token是否过期:token有效期30秒,token只能使用一次
token只能使用一次如何理解
RTSP拼接token播放成功与否,服务会将token清空,第二次将无法使用
2、token与trackID是否拼接:token是必须的,trackID主要看ICC版本
正确示例:rtsp://10.35.239.81:9100/dss/monitor/param/cameraid=1000018%240%26substream=1?token=170;
低版本可能需要拼接trackID=0才能播放,可尝试拼接trackID=0,完整地址:rtsp://10.35.239.81:9100/dss/monitor/param/cameraid=1000018%240%26substream=1?token=170&trackID=0;
2、设备接入协议为友商设备私有协议接入,默认不支持,若需支持,请参考友商设备无法播放尝试配置配置
3、若以上配置仍无法解决,请设置下VLC播放器:工具-》偏好设置-》输入/编解码器下的live555流传输下RTP over RTSP项,如下图所示
客户在对接录像下载中一般指的是指定某个时间段下载录像(rtsp录像下载),而不是录制视频功能下载(边播边录)
rtsp录像下载一般建议客户对接dpsdk,目前只有C++语言,目前没有相关API接口,支持需定制
rtsp录像下载还有另一种方式:前端浏览器页面通过集成大华播放插件实现rtsp录像下载,场景较少,一般很少对接
组织管理->设备管理->部门管理->人员管理->卡片管理->门禁授权
组织管理:组织根节点001,设备是挂在组织节点下;跳过组织管理是可以的,设备添加选择根节点
设备管理:设备增删改接口不支持,查询门禁设备通道,通道类型选择7
部门管理:部门根节点是1,人员是挂在部门节点下;跳过部门管理是可以的,人员添加选择根节点
人员管理:人员上传照片-》增、改录入人员信息,授权前查询人员
卡片管理:人脸开门与刷卡开门都需要建卡,人脸、指纹授权需绑定人员主卡
门禁授权:授权方式有按人/卡,按门、按部门授权,调用接口也不一样
备注:新增卡片与门禁授权需间隔一定时间,毫秒级,基础数据卡片信息同步门禁是通过mq,否则可能会报卡片不存在错误
门禁开门计划数最大127个,设备最大限制
对于请假流程建议修改主卡有效期控制
人脸授权流程:上传照片->新增人员->开卡->人脸授权
人脸、指纹授权均需要绑定卡片,生物特征授权是根据主卡授权
接口调用顺序参考业务对接->能力概览->门禁管理->门禁授权
- 人脸或卡长时间未下发,但是人员已下发 --> 排查asc_card_sync表中 person_ready是否是1,1是正常,0是异常
- 在有权限的部门下新建人员,没有继承权限 --> 可能是因为卡比人先到导致的, 可以重新开卡
- 人脸任务和特征提取任务出现SDK错误 ---> 排查下发的图片格式是否正确或者图片是否存在
- 下发卡片出现sdk错误 --> 一般是设备上报的错误码未出现在 关系库中,找服务排查 或者升级 ACDG
- 二维码扫描提示未授权 ---> 检查 卡号加密秘钥是否正确
- 二维码扫描提示超时 --> a. 确认设备时间和平台时间是否一致 b. 抓包联系设备排查
IPC、IVSS、DP
组织管理->设备管理->部门管理->人员管理->注册库管理->人员头像绑定->人员布控
组织管理:组织根节点001,设备是挂在组织节点下;跳过组织管理是可以的,设备添加选择根节点
设备管理:设备增删改接口不支持,查询IPC或IVSS视频通道,通道类型选择1
部门管理:部门根节点是1,人员是挂在部门节点下;跳过部门管理是可以的,人员添加选择根节点
人员管理:人员上传照片-》增、改录入人员信息
注册库管理:注册库增删改查,库类型选择内部库,绑定IPC或IVSS设备
人员头像绑定:将指定部门下人员头像下发到注册库
人员布控:指定注册库与通道,设置相似度进行布控
组织管理->设备管理->人员布控-人员管理->注册库管理->人员布控
组织管理:组织根节点001,设备是挂在组织节点下;跳过组织管理是可以的,设备添加选择根节点
设备管理:设备增删改接口不支持,查询IPC或IVSS视频通道,通道类型选择1
人员管理:此人员为人员布控创建人员,非内部人员,创建入口是人员布控下-人员(黑白名单库)
注册库管理:注册库增删改查,库类型选择黑/白名单库,绑定IPC或IVSS设备
人员布控:指定注册库与通道,设置相似度进行布控
黑白名单库的人员是从人员布控下录入的,而内部库人员是从基础框架人员管理同步到人员布控下的
内部库需做人员头像绑定,黑白名单库直接录入,自动同步到设备
ICC框架版本要求5.0.6及以上,人员布控版本至少为1.0.3bugfix版本,详细参考接口文档版本号说明
内部库需做人员头像绑定,黑白名单库直接录入,自动同步到设备
参考目录:文档-API文档-附录-事件列表-人员布控,具体如下所示
陌生人报警(1001000):FR设备(设备支持智能分析)上报,未识别人脸记录
人脸检测报警(1001005):FD设备(设备不支持支持智能分析,仅是抓拍)上报,未识别人脸记录
白名单库报警(1001001):库类型为白名单库产生的人员识别记录
黑名单库报警(1001002):库类型为黑名单库产生的人员识别记录
内部员工报警(1001003):库类型为内部库库产生的人员识别记录
访客报警(1001004):库类型为访客库产生的人员识别记录
人体识别报警(1001006):人体特征结构化报警数据,包含的人脸部分,只入库不推报警(人体识别与人脸检测都有数据,实时推送的是人体识别报警,不推送人脸检测报警)
机动车识别报警(1001007):机动车车体特征报警数据
非机动车识别报警(1001008):非机动车车体特征报警数据
/log/evo-face/evo-face.log
门禁设备、可视对讲设备、道闸设备、人员布控设备
组织管理->设备管理->部门管理->人员管理->访客预约->被访人审批->访客机登记->权限下发
组织管理:组织根节点001,设备是挂在组织节点下;跳过组织管理是可以的,设备添加选择根节点
设备管理:设备增删改接口不支持,查询IPC或IVSS视频通道,通道类型选择1
部门管理:部门根节点是1,人员是挂在部门节点下;跳过部门管理是可以的,人员添加选择根节点
访客预约:需指定被访人,可从人员管理查询获取
被访人审批:被访人审批,vip访客审批通过权限下发,普通访客访客机登记后权限下发
访客机登记:普通访客需访客机登记后权限下发
权限下发:自动授权通道和自动签离通道、停车场权限、被访人可视对讲设备权限
访客预约,被访人审批指定VIP访客类型时,权限下发,无需登记,即可进入
访客预约,被访人审批指定普通访客类型时,访客机登记后权限才会下发
访客邀约,指定VIP访客类型,权限自动下发,前提是访客子系统版本1.1.0版本
小区访客预约,权限自动下发
访客预约需被访人审批
访客邀约则直接跳过审批
是否配置自动授权通道和自动签离通道
车辆进入检查下停车场场区是否配置,预约登记是否有记录
访客类型是VIP访客还是普通访客类型
普通访客:访客机是否登记
人脸五官是否清晰可见
参考目录:文档-API文档-附录-事件列表-访客管理,具体如下所示
访客行踪推送(visitor.record):访客通行记录推送
访客状态变更信息(visitor.status):访客状态推送
移动端审核:针对于H5预约的访客,如果开启,则H5页面预约的访客需要被访人/固定审核人进行审核
人证核验:如果开启认证核验,所有访客均需要在访客机进行认证比对,才会进行授权,访客状态变更为在访
访客机登记审核:开启后,在访客机现场预约登记的访客,登记后也需要被访人/固定审核人进行审核,审核完成后下发权限,状态变更为在访
/log/evo-visitor/evo-visitor.log
a. 首先在平台上配置场区,设置进出放行模式,收费规则,绑定设备
b. 调API文档-停车管理-人员管理下的添加人员-车辆接口,绑定场区、车辆,设置有效期
c. 充值缴费,可跳过
d. 三方支付调API文档-停车管理-停车预缴费接口实现,可跳过
e. 三方手动控制车辆进出调API文档-停车管理-接口配置预进场、预出场配置,可跳过
f. 实时接收抓拍记录参考API文档-事件中心-事件订阅接口,订阅业务事件,类型为:car.capture 或 通过接口配置订阅车辆进场数据/车辆出场,可跳过
车辆管控建议对接停车场的人员与车辆管理,因为停车场的人员与车辆管理包含停车场业务关键信息,例如场区信息、用户类型
基础框架的人员、车辆不包含场区信息、用户类型,即未定义人员与车辆,直接添加的车辆无法在停车场进行管控,需将基础框架人员、车辆转为停车场支持的内部车辆与内部人员,因此不推荐调基础框架接口对接停车场
通过停车场模块添加的人员为内部人员,包含场区信息,可做停车场业务
通过基础框架添加的人员是未定义人员,缺少场区信息,若需做停车场业务,需将未定义人员转为内部人员
车辆中的场区可管控车辆进出,可在无人员(车主)的情况下设置黑白名单
人员中的场区则是用于处理收费,只有当人员与车辆的场区取交集的场区进出按用户类型收费处理,其他情况按照临时用户收费处理
不收费
车辆信息中的黑名单是所有设备都无法通行
设备黑名单管理可设置指定道闸设备设置黑名单,粒度更细的管控
停车管理通过道闸设备产生的过车记录,对接的是停车场模块
交通卡口通过卡口设备产生的过车记录,对接的是卡口模块
事件订阅可实时推送停车场抓拍记录、车辆进出记录、停车场报警数据,且数据不加密
接口配置可实时推送停车场抓拍记录、车辆进出记录、车辆预进场/预出场记录,数据是加密传输
若要根据预进场/预出场记录,手动控制开闸,对接接口配置功能,其他场景下推荐事件订阅
道闸一体机处理时需注意下,基础资源的设备编码是M,则请求道闸控制接口时的道闸设备编码需+1
规则如下:道闸一体机:相机编号(基础框架设备编码)为 m,那么道闸编号为 m+1,led是 m+2
宗旨:要使用停车场的道闸通道编码做控制,不可用基础资源下的道闸通道 例如基础资源下设备编码:1000001,对应的基础资源下道闸通道为:1000001$14$0$0,则 请求道闸控制接口时道闸通道编码为1000002$14$0$0
错误示例:{"channelId":"1000001$14$0$0","operateType":1}
正确示例:{"channelId":"1000002$14$0$0","operateType":1}
/log/ipms/ipms.log