调用业务接口时,需在请求头中设置鉴权信息
请求头key: Authorization
请求头value: token_type + 空格 + access_token
其中token_type和access_token是认证接口返回的字段
示例:Authorization: bearer 1:704dc1bc-b05e-4ed5-a889-0261584919f6
1.系统管理员(登录名:system)登录ICC平台
2.点击平台首页右上角"OpenAPI",选择申请访问访问凭证
3.输入自定义的 clientId,系统将自动生成对应的 clientSecret
如申请访问凭证时出现自定义异常,请尝试刷新平台首页或重新登录 ICC 平台后再次点击 OpenAPI 进行申请
请按以下步骤排查:
1.检查 public_key 是否过期,默认是10分钟,鉴权认证成功后失效
2.确认 password 字段是否为密文传输,必须使用 RSA 加密后传输,加密方式请参考 RSA密码加密
3.检查 password 加密是否正确,详细说明请参考 RSA密码加密
请求头Authorization未设置,请参考协议鉴权
请求头Authorization过期,请调鉴权认证接口重新获取
格式:https://<平台IP>:<平台端口>/URI
平台IP:ICC平台的ip,部署在现场的服务器ip,非ICC开放平台地址
平台端口:ICC平台的端口,默认443
URI:接口URL,格式:evo-apigw/子系统应用名/版本号/URI
evo-apigw:固定值,网关服务
子系统应用名:子系统应用名,一般是evo-xxx开头,视频(admin)、停车场(ipms)、可视对讲(vims)除外
版本号:子系统版本号,通常为固定值(如 1.0.0),部分子系统无版本号
URI:子系统接口资源地址
示例:https://10.35.239.168/evo-apigw/evo-oauth/1.0.0/oauth/public-key
问题:
带有 evo-apigw 的接口地址不支持跨域,导致前端无法直接调用
解决方案:
推荐方案:通过后端服务转发请求
做法:前端调用自身后端服务,再由后端服务请求 ICC 开放接口
优点:提升安全性,避免鉴权信息暴露;确保系统稳定运行
不推荐方案:前端代理方式
原因:可能导致鉴权信息(如用户名、密码)暴露,存在安全隐患
特殊场景处理:
视频拉流等场景:需由第三方后端服务进行请求转发,接口对接工作需三方前后端协同完成
请按以下步骤排查接口调用问题:
1.协议类型:ICC 接口默认使用 HTTPS 协议;HTTP 需运维开启支持,默认端口为 83
2.端口检查:ICC 默认 HTTPS 端口为 443,HTTP 调试端口为 83
3.请求方法:确认请求方法(GET、POST、PUT、DELETE)与接口文档一致
4.Content-Type:除文件上传接口使用multipart/form-data外,其他接口请求需使用application/json
5.参数类型:请求参数类型需与接口文档中定义的类型一致
6.参数合法性:确保参数值符合接口要求
7.日志分析:可以根据URL https://{{host}}/evo-apigw/xxx/{{version}}中的xxx查询/log/xxx/xxx.log文件,查看具体错误信息
系统异常,请检查请求方式、请求类型、请求参数
若还未解决,需查看服务器日志,可由区域同事配合,按照接口问题排查步骤排查
请检查以下内容:
1.子系统是否已安装,可通过访问以下地址确认:
http://<平台IP>:8916/evo-discover/1.0.0/srd/subsystem
2.子系统版本号是否正确
3.若参数为 URL 路径的一部分,即使参数非必填,也需保留字段名,值可为空
示例:/evo-apigw/pmms/real/data/nodeId=001&devChildType=1801&pageNo=&pageSize=20
请检查以下内容:
请求数据格式(Content-Type)是否正确
提交的数据类型是否符合接口要求
ICC 平台默认使用 HTTPS 协议,请将请求协议从 http 改为 https
排查步骤:
1.验证访问凭证
确认 clientId 和 clientSecret 的正确性
如有需要,可重新申请并对比验证
2.检查请求头中的 Token
确认请求头中已正确设置 token
检查 token 是否在有效期内
3.进一步排查
若上述步骤均无问题,联系区域技术支持进行进一步排查
对接ICC平台需根据业务需求开放以下端口:
服务类型 | 协议 | 端口 |
---|---|---|
业务接口 | HTTPS | 443 |
业务接口 | HTTP (调试) | 83 |
HLS 拉流 | HTTP | 7086 |
HLS 拉流 | HTTPS | 7096 |
RTSP 拉流 | MGW 服务 | 9090 |
RTSP 拉流 | 实时流 | 9100 |
RTSP 拉流 | 录像回放 | 9320 |
FLV 拉流 | HTTP | 7886 |
FLV 拉流 | HTTPS | 7896 |
RTMP 拉流 | - | 1975 |
设备主动注册 | - | 9500 |
ICC平台默认未安装SSL证书,调用HTTPS接口时需在代码中忽略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 证书验证的策略
上传人脸图片需满足以下规范:
1.照片需要小于4M
2.照片大小推荐 500*500
3.图片格式JPG、JPEG、PNG
4.人脸无遮挡(如戴帽子、口罩、眼镜等)、无修图
5.人脸需双眼睁开、表情自然、露额,头发不要遮挡
图片拼接格式有三种方式,分别是OSS方式、停车场方式、交通卡口方式,分别应用于不同的子系统
1.OSS方式:通用图片访问方式,由于历史遗留问题,不兼容停车场方式与交通卡口方式
2.停车场方式:从7016平台衍生过来的,复用7016图片拼接方式,仅适用于停车场(ipms)模块
3.交通卡口方式:交通卡口子系统图片专门拼接方式,仅适用于交通卡口(evo-car)模块
OSS方式为通用图片访问方式,适用于新接入子系统。停车场子系统(ipms)与交通卡口子系统(evo-car)不兼容此方式
HTTPS格式:https://<平台IP>:<平台端口>/evo-apigw/evo-oss/URI?token=access_token
HTTP格式:http://<平台IP>:<调试端口>/evo-apigw/evo-oss/URI?token=access_token
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
调试端口:ICC平台的http端口,默认83
URI:图片访问相对路径
access_token:调认证接口返回的access_token
HTTPS示例:
https://10.35.122.144/evo-apigw/evo-oss/68cf38d8-1f2d-11eb-9c6f-a0bd1dd5d8b6/20201111/1/583ec4ab-23e8-11eb-81ca-a0bd1dd5d8b6.jpg?token=1:ced7836d-6753-4253-b3ce-639e922fb683
HTTP示例:
http://10.35.122.144:83/evo-apigw/evo-oss/68cf38d8-1f2d-11eb-9c6f-a0bd1dd5d8b6/20201111/1/583ec4ab-23e8-11eb-81ca-a0bd1dd5d8b6.jpg?token=1:ced7836d-6753-4253-b3ce-639e922fb683
适用于停车场子系统图片拼接方式
情况1:图片url不含fileUrl和oss关键字,拼接说明如下所示:
方式一:/d前面的部分替换为http://<图片转发服务IP>:9480/
图片转发服务IP:默认ICC平台IP,若现场有分布式,为图片转发服务IP
图片url返回示例:
9101/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
图片url拼接结果:
HTTP方式完整地址:http://10.35.122.144:9480/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
HTTPS方式完整地址:https://10.35.122.144:9687/d/1000065$1$0$0/20221202/13/5021-187-0.jpg
注:HTTP方式访问端口是9480,HTTPS方式访问端口是9687
方式二:在方式一组装好的基础上,再拼接https://<平台IP>:<平台端口>/evo-apigw/<原始图>或<缩略图>?fileUrl=urlencode(方式一图片地址)
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
原始图:固定值 imageConvert/originalImage
缩略图:固定值 imageConvert/image
原始图完整地址: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
情况2:图片url含fileUrl关键字,拼接说明如下所示:
格式:https://<平台IP>:<平台端口>/evo-apigw/URI
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
URI:停车场过车/车辆进出返回图片地址,支持的字段有originalPicPath、realCapturePicPath字段
图片url返回示例:
原始图(originalPicPath字段):/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
图片url拼接结果:
原始图完整地址: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
缩略图完整地址: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
情况3:图片url含oss关键字,拼接说明如下所示:
去除前缀部分“oss/9101/”,即为oss方式存图的相对路径,参考oss方式进行拼接即可,此处不再赘述
图片url返回示例:
oss/9101/a4924caf-d2ea-11ef-aa08-101965e7f166/20250117/1/dsf_8f154715-d4a0-11ef-a9c1-101965e7f166_2116968_2273485.jpg
图片url拼接结果:
HTTP方式完整地址:http://10.35.122.144:83/evo-apigw/evo-oss/a4924caf-d2ea-11ef-aa08-101965e7f166/20250117/1/dsf_8f154715-d4a0-11ef-a9c1-101965e7f166_2116968_2273485.jpg?token=1:ced7836d-6753-4253-b3ce-639e922fb683
HTTPS方式完整地址:https://10.35.122.144/evo-apigw/evo-oss/a4924caf-d2ea-11ef-aa08-101965e7f166/20250117/1/dsf_8f154715-d4a0-11ef-a9c1-101965e7f166_2116968_2273485.jpg?token=1:ced7836d-6753-4253-b3ce-639e922fb683
适用5_evo-event.md于交通卡口子系统图片拼接方式
格式:https://<平台IP>:平台端口/evo-apigw/evo-oss/URI
平台IP:ICC平台IP
平台端口:ICC平台的端口,默认443
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
1.相对地址方式:https://平台ip:8320/nms/ndfs/v1/file/image?imageAddress=URI
平台IP:ICC平台IP
URI:图片相对路径,例如:/ossvqrs/202401/2b301303.jpg
示例:平台ip=10.51.3.1,URI=/ossvqrs/202401/2b301303.jpg
完整地址:https://10.51.3.1:8320/nms/ndfs/v1/file/image?imageAddress=/ossvqrs/202401/2b301303.jpg
2.绝对地址方式:https://平台ip:8320/nms/ndfs/v1/proxy?fileUrl=base64(URI)
平台IP:ICC平台IP
URI:绝对相对路径,例如:http://10.51.3.1/pic/2b301302.jpg
示例:平台ip=10.51.3.1,URI=http://10.51.3.1/pic/2b301302.jpg
完整地址:https://10.51.3.1:8320/nms/ndfs/v1/proxy?fileUrl=aHR0cDovLzEwLjUxLjMuMS9waWMvMmIzMDEzMDIuanBn
代码示例请参考:PicDownload.java
错误码说明:图片质量检测服务未授权
处理方式:请联系联系大华售中,烧制图片质量检测服务加密狗
通道编码格式:设备编码$单元类型$单元序号$通道序号
设备编码:7位数字,由系统自动生成
单元类型:单元类型即通道类型
单元序号:单元序号
通道序号:通道号,从0开始
示例:1000006$1$0$1
常见单元类型:视频通道:1、门禁通道:7、道闸通道:14
组织:是基于现实世界结构建立的逻辑层级,用于表示设备在平台中的地理位置归属。组织与设备关联,主要用于设备权限的管理和控制
部门:是根据企业或用户需求自定义的逻辑层级,用于表示人员的从属关系。部门与人员关联,主要用于人员权限的管理和控制
两者虽然都采用层级结构,但在平台中作用对象不同
组织:用于管理设备与通道的权限,根节点为001
部门:用于管理员工与角色的权限,根节点为1
基础组织:用于承载平台核心业务逻辑,是实际权限控制和数据管理的基础
逻辑组织:基于基础组织创建,主要用于前端展示,无实际业务处理功能
设备通过“设备管理”模块添加到平台,通道是设备的一部分,设备与通道是一对多关系
示例:
摄像头可作为设备添加到平台,设备编码为7位数字
摄像头(如IPC)也可作为设备(如NVR)一部分集成到平台,此摄像头则为通道,通道编码包含$符号标识
基础应用 -> 车辆管理:属于基础资源模块,数据存储于evo-brm,作为业务中台提供通用能力,与具体业务耦合度低
停车场 -> 车辆管理:属于停车场业务模块,数据存储于ipms,在基础数据基础上扩展了业务字段(如场区信息),实现完整的业务闭环
数据同步:两者数据互通并同步,但停车场模块信息更丰富
事件订阅:可通过事件中心订阅车辆实时消息
调用接口:通道分页查询
根据unitTypeList过滤,枚举值参考单元类型
示例:
视频通道:unitType=1
门禁通道:unitType=7
道闸通道:unitType=14
示例请求体(查询视频、门禁、道闸通道)如下所示:
{
"pageNum": 1,
"pageSize": 10,
"unitTypeList":[1,7,14],
"includeSubOwnerCodeFlag":true
}
设备经纬度坐标采用 WGS84地心坐标
报警输入通道:外部探测器通过该通道向设备发送报警信号
报警输出通道:设备通过该通道控制外部设备(如灯光、门禁等)
基础组织从右侧减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° |
第32位 | 废弃位(超出 BRM 数值限制,无法使用) |
1.subsystemType 字段固定值为 0
2.monitor 字段最大长度为 80 字符,请求方式为 POST,请求类型为 application/json
3.magic 字段取值规则:由 monitor 中的 IP 和端口拼接为ip_端口格式
4.authorities、types、orgs、nodeCodes 等字段若为空(不传),表示订阅所有事件;若传递空数组,则表示不订阅任何事件
5.事件订阅推送 不支持重试机制,请确保接收服务高可用
当 category = "alarm" 时,types 参考 ICC 平台中 报警类型 的报警编码
当 category = "business" 时,types 由各子系统自定义,具体值请参考附录 -> 事件类型 -> 业务类型
事件消息体格式遵循统一规范,具体如下:
通用消息体格式:参考 API 文档 -> 事件中心 -> 通用事件格式
报警事件:参考通用报警格式
业务事件:参考通用业务信息格式
设备状态事件:参考通用设备状态格式
感知消息事件:参考感知消息格式
扩展信息 extend:根据模块和设备不同,推送内容可能有所差异,以实际推送内容为准
接收不到消息具体排查步骤如下所示:
1.SSH 登录 ICC 平台后台
2.验证订阅地址连通性
2.1.网络不通问题
若执行过程中无返回结果、提示连接被拒绝、域名无法解析等,通常为网络问题,需联系三方网络工程师协助排查
2.2.模拟发送 HTTP POST JSON 请求
curl -i -X POST -H 'Content-type':'application/json' -H 'Transfer-Encoding':'chunked' -d '{"id":65,"category":"alarm","method":"alarm.msg","info":{"orgName":"人脸门禁","nodeCode":"1000366","deviceCode":"1000366","alarmCode":"7a026fc218d7422aa7f963851be91be4","nodeType":1,"alarmDate":"1702693932","deviceName":"10.55.37.16","alarmGrade":2,"isSave":true,"unitType":7,"alarmType":16,"channelSeq":0,"orgCode":"001001","alarmStat":1,"isEvent":true},"subsystem":"evo-accesscontrol","userIds":null,"sid":null,"domainId":null,"infoArray":null,"protocol":null,"supplementFlag":null,"uuid":"alarm_6e74bb813fff46e3955847cb8a300f66_1702693932523"}' http://10.54.20.20:60009/iccdemo/receive/receiveMsg
2.3.模拟发送HTTPS POST JSON 请求
curl -i -X POST -H 'Content-type':'application/json' -H 'Transfer-Encoding':'chunked' -d '{"id":65,"category":"alarm","method":"alarm.msg","info":{"orgName":"人脸门禁","nodeCode":"1000366","deviceCode":"1000366","alarmCode":"7a026fc218d7422aa7f963851be91be4","nodeType":1,"alarmDate":"1702693932","deviceName":"10.55.37.16","alarmGrade":2,"isSave":true,"unitType":7,"alarmType":16,"channelSeq":0,"orgCode":"001001","alarmStat":1,"isEvent":true},"subsystem":"evo-accesscontrol","userIds":null,"sid":null,"domainId":null,"infoArray":null,"protocol":null,"supplementFlag":null,"uuid":"alarm_6e74bb813fff46e3955847cb8a300f66_1702693932523"}' -k --insecure https://10.54.20.20/iccdemo/receive/receiveMsg
3.如网络正常仍无法接收或部分接收不到,请参考事件订阅接收不到排查文档进行排查
排查建议如下所示:
Java 语言接收:确认是否被框架拦截器拦截
C# 语言接收:确认是否为异步接收机制,可能导致数据尚未完全接收
Python 语言接收:建议使用 json.dumps(消息体) 处理非标准 JSON 格式的消息体
支持。要求第三方服务支持 POST 请求,且请求内容为 application/json 格式
设备可触发的报警类型,可通过 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 客户端查看
登录 ICC 客户端,进入【实时预览】功能,查看设备编码模式
2.通过设备 Web 页面查看
以大华设备为例,浏览器输入设备 IP 地址并登录设备 Web 管理界面查看
3.通过 VLC 播放器查看
使用 VLC 播放视频流,查看流媒体信息,查看路径:工具->编解码器信息->编解码器(D)
1.登录 ICC 服务器后台,编辑配置文件:vim /opt/dss/PCPS/PCPS.xml
2.修改配置项 StreamConvertor,将值由 0 改为 1,保存文件(命令:退出编辑(Esc),再执行(:wq)保存)
3.查看 PCPS 进程:pidof PCPS
4.重启 PCPS 服务:kill -9 $(pidof PCPS)
5.若仍无法播放,建议登录设备 Web 页面,将视频类型由“复合流”修改为“视频流”,并重启设备
1.检查通道状态:确保通道在线
2.确认端口连通性:确保 7086(HTTP)或 7096(HTTPS)端口可达
3.token配置:
5.0.12 及以上版本必须拼接 token,有效期为 2 小时
如需取消 token 配置,请参考 HLS/FLV/RTMP取消拼接token配置
注意:取消 token 可能导致安全风险,请谨慎操作
4.协议兼容性:
HLS 默认不支持私有协议接入,推荐使用 GB/T 28181、ONVIF 等标准协议
如需支持私有协议,请参考 友商设备无法播放配置建议
5.编码格式建议:
推荐使用 H.264 编码
浏览器通常不支持 H.265 编码,VLC 播放器支持
6.资源 404 问题排查:
方法一:在浏览器地址栏输入流地址,查看是否提示“404”或“网页未找到”
客户端抓包 7086 端口分析
解决方法请参考 HLS播放资源找不到
7.HTTPS 拉流配置:需导入安全证书并配置 Nginx,请参考 HLS/FLV拉流https配置
实时流排查步骤:
1.检查检查 MES 配置文件:
1.1.编辑 /opt/dss/EIMedia/MESConfig.xml
1.2.将 ProcessRedirect 设置为 true
1.3.重启 MES 服务
pidof mes
kill -9 <MES_PID>
2.检查 MGW 服务:确认 9090 端口是否正常
3.抓包分析:对 7086、9090、9000 端口进行抓包,重点分析 9000 端口
若未返回 RTSP 流地址,说明 evo-admin 服务异常,需提供抓包日志和 admin 日志给研发分析
录像回放流排查步骤:
1.检查录像是否存在:
1.1.在客户端播放指定时间段录像
1.2.调用接口 查询普通录像信息列表 或 查询报警录像信息列表 获取录像信息
确保流地址中的 begintime、endtime、substream、recordType 与接口返回一致
3.抓包分析:同上,重点分析 9000 端口
1.检查通道状态:确保通道在线
2.确认端口连通性:7886(HTTP)、7896(HTTPS)
3.token 配置:5.0.12及以上版本必须拼接token,token有效期2h,5.0.12之前版本则跳过此步骤
5.0.12版本若取消token拼接,参考HLS/FLV/RTMP取消拼接token配置,不拼接token播放flv容易造成安全泄露,请知悉
4.协议兼容性:FLV不支持友商私有协议接入,建议通过国标、onvif接入,如需支持请参考友商设备无法播放配置建议配置
5.编码格式:必须使用 H.264
6.资源 404 问题:参考FLV播放资源找不到
7.HTTPS 拉流配置:需导入安全证书并配置 Nginx,请参考 HLS/FLV拉流https配置
1.验证 MGW 服务状态
1.1.确认 MGW 服务是否正常启动
1.2.检查 9090 端口是否处于监听状态
2.服务器抓包分析:
2.1对 7886、9090 和 9000 端口进行网络抓包,重点关注 9000 端口的通信数据
2.2根据 9000 端口和通道编码进行过滤,检查返回信息中是否包含 RTSP 流地址信息
若未包含 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 端,在【设备管理】->【通道】页面搜索 1001337$1$0$26,确认其在线状态
2.确认端口连通性
验证 1975 端口:确保该端口处于开放状态且网络可达 3.token 配置检查
版本要求:
5.0.12 及以上版本:必须在流地址中拼接 token,token 有效期为 2 小时
5.0.12 之前版本:无需拼接 token
取消 token 拼接(谨慎操作):
如需取消 token 拼接,请参考 HLS/FLV/RTMP取消拼接token配置 配置
安全提示:不拼接 token 可能导致安全风险,请谨慎操作
4.协议兼容性
默认支持标准协议:RTMP 默认不支持友商私有协议接入,推荐使用 GB/T 28181 或 ONVIF 等标准协议
特殊需求:如需支持私有协议,请参考 友商设备无法播放配置建议 进行配置
5.编码格式要求
编码模式:设备编码模式必须为 H.264
6.服务器抓包分析
抓包端口:对 1975、9090、9000 端口进行抓包,重点关注 9000 端口的通信数据
分析方法:根据 9000 端口和通道编码过滤抓包数据,检查返回信息中是否包含 RTSP 流地址信息
问题定位:若未包含 RTSP 流地址信息,表明 evo-admin 服务可能存在异常(常见于级联设备支持不佳的情况)
解决方法:收集相关抓包数据及 admin 日志,提交给研发团队进行进一步分析
7.录像回放流排查步骤
验证录像存在性:
检查方法:在客户端上播放指定时间段的录像,确认其是否正常
比对录像信息:
获取录像信息:根据录像类型(普通或报警),调用相应接口获取录像信息
普通录像:查询普通录像信息列表
报警录像:查询报警录像信息列表
7.3.核实 RTMP 流地址参数
时间范围一致性:
RTMP 流地址中的 begintime 和 endtime 必须位于录像信息中 starttime 和 endtime 的闭区间内(注意:录像不支持跨文件播放)
子流类型(substream)一致性:
确认 RTMP 流地址中的 substream 参数与录像信息中的子流类型一致
记录类型(recordType)准确性:
中心录像:1-普通录像、2-报警录像、81-补录录像、82-报警预录录像
设备录像:固定为 0
测试建议:如条件允许,可尝试将 recordType 切换为 1、2、81 或 82,验证播放效果
HLS/RTMP配置修改
1.编辑配置文件:
编辑指令: vi /opt/dss/EIMedia/MESConfig.xml
修改内容: 将 SRDEnable 标签的值改为 false
2.重启 MES 服务
查看 MES 进程:pidof mes
终止 MES 进程: kill -9 $(pidof mes)
FLV配置修改
1.编辑配置文件:
编辑指令: vi /opt/dss/EIFLV/FLVConfig.xml
修改内容: 将 SRDEnable 标签的值改为 false
2.重启 MES 服务
查看 FLV 进程:pidof flv
终止 FLV 进程: kill -9 $(pidof flv)
注意:ICC5.0.12及以上版本才支持修改
1.检查设备编码模式
当前编码模式:如果设备的编码模式为 H.265,可能会导致播放黑屏问题
建议编码模式:推荐将编码模式更改为 H.264、H.264B 或 H.264H
2.切换码流类型
码流类型切换:尝试切换不同的码流类型,以排除码流格式导致的问题
3.重启相关服务和设备
重启设备:重启视频设备,确保其配置正确并正常运行
重启 MTS 服务:kill -9 $(pidof MTS)
重启 MES 服务:kill -9 $(pidof mes)
1.编辑配置文件:vi /opt/dss/EIMedia/MESConfig.xml
2.修改配置项:将RTPStd改为false,LHLSEnable改为true
3.重启MES服务
查看 MES 进程:pidof mes
终止 MES 进程:kill -9 $(pidof 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配置,调整内外网映射加载优先级,默认支持内网,不支持双网卡
3.4.1.实时流配置
打开MTS.xml:vi /opt/dss/MTS/MTS.xml
修改 RtspUrlAddr 标签:将外网设置为默认加载:
<RtspUrlAddr1>外网ip:端口</RtspUrlAddr1>
<RtspUrlAddr2>内网ip:端口</RtspUrlAddr2>
重启MTS服务
3.4.2.录像回放流配置
打开SS.xml:vi /opt/dss/SS/SS.xml
修改 RtspUrlAddr 标签:将外网设置为默认加载:
<RtspUrlAddr1>外网ip:端口</RtspUrlAddr1>
<RtspUrlAddr2>内网ip:端口</RtspUrlAddr2>
重启SS服务
获取方法:参考 API 文档中【视频应用】->【录像回放】->【获取普通/报警录像】接口的返回结果,根据字段对应即可
注意事项:无需深入理解各字段的具体含义,直接根据返回值使用即可
1.获取录像信息
首先调用相关接口获取录像信息,确保获取到正确的录像片段
2.根据录像信息调用获取流地址接口
根据第一步获取的录像信息,调用获取流地址的接口,该接口将返回可用的录像流地址列表
3.客户端播放
使用客户端播放获取到的流地址。如果存在多个流地址,需监听每个录像片段的播放结束时间,自动切换至下一个流地址继续播放
问题原因:
通道编码验证:
通道是否存在:确认指定的通道编码是否真实存在
权限验证:检查当前鉴权用户是否具有访问该视频通道的权限(可在 ICC 平台的【设备管理】->【通道】页面查看)
解决方法:
JSON 格式化:将 body 参数进行 JSON 格式化,检查是否存在隐藏的转义符导致的问题
问题原因:
当 VLC 播放器在播放 RTSP 流时提示输入用户名和密码,通常是因为 token 过期或配置不当导致的 401 错误。具体排查步骤如下所示:
1.检查 token 是否过期
token 有效期:token 的有效期为 30 秒,并且只能使用一次
token 单次使用机制:RTSP 拼接 token 并成功播放后,服务端会立即将该 token 清空,因此第二次使用同一 token 将无法成功
2.确认 token 与 trackID 的拼接格式
token 必填:RTSP 流地址中必须包含 token 参数
trackID 配置:根据 ICC 版本的不同,可能需要额外拼接 trackID=0
正确示例(标准格式):
rtsp://10.35.239.81:9100/dss/monitor/param/cameraid=1000018%240%26substream=1?token=170
低版本示例(含 trackID):
rtsp://10.35.239.81:9100/dss/monitor/param/cameraid=1000018%240%26substream=1?token=170&trackID=0
3.设备接入协议检查
友商设备私有协议:如果设备采用的是友商的私有协议接入,默认情况下可能不支持直接播放。如需支持,请参考 友商设备无法播放配置建议 进行相关配置
4.VLC 播放器设置调整
如果以上配置仍无法解决问题,可以尝试调整 VLC 播放器的设置
路径:工具 -> 偏好设置 -> 输入/编解码器
选项:在 live555 流传输下选择 RTP over RTSP 项
使用云台功能操作前提:
1.确认设备是否支持云台功能
2.若为球型摄像机,默认具备云台控制能力;若为枪型摄像机,则需勾选云台控制能力级(具体操作见下图)
门禁系统的对接流程主要包括以下几个步骤:
1.组织管理
功能描述:管理组织结构,设备通常挂载在组织节点下
操作说明:可以跳过此步骤,直接在设备添加时选择根节点(默认为 001)
2.设备管理
功能描述:管理门禁设备,包括查询门禁设备通道
操作说明:当前接口不支持设备的增删改操作,查询门禁设备通道时,通道类型应选择 7
3.部门管理
功能描述:管理部门结构,人员通常挂载在部门节点下
操作说明:可以跳过此步骤,直接在人员添加时选择根节点(默认为 1)
4.人员管理
功能描述:管理人员信息,包括上传照片、增改人员信息等
操作说明:在授权前需查询相关人员信息,确保信息准确
5.卡片管理
功能描述:管理卡片信息,人脸开门与刷卡开门均需创建卡片
操作说明:人脸、指纹授权需绑定人员主卡,确保生物特征与主卡关联
6.门禁授权
功能描述:根据需求进行门禁授权,支持按人/卡、按门、按部门等多种授权方式
操作说明:调用不同接口实现具体授权功能
注意:
新增卡片与门禁授权:需间隔一定时间(毫秒级),基础数据卡片信息同步门禁通过 MQ 实现,否则可能报“卡片不存在”错误
限制说明:单个设备的门禁开门计划数最大为 127 个
建议措施:对于请假等临时流程,建议通过修改主卡有效期来控制访问权限
授权流程:上传照片 -> 新增人员 -> 开卡 -> 人脸授权
注意:人脸、指纹授权均需绑定卡片,生物特征授权基于主卡进行
接口调用顺序参考业务对接->能力概览->门禁管理->门禁授权
参考业务对接 -> 能力概览 -> 门禁管理 -> 门禁授权 中的接口调用顺序进行操作
1.人脸或卡长时间未下发,但人员已下发
排查方法:检查 asc_card_sync 表中 person_ready 字段值,1 为正常,0 为异常
2.在有权限的部门下新建人员,没有继承权限
排查方法:可能是卡比人先到导致的,尝试重新开卡
3.人脸任务和特征提取任务出现 SDK 错误
排查方法:检查下发的图片格式是否正确或图片是否存在
4.下发卡片出现 SDK 错误
排查方法:一般是设备上报的错误码未出现在关系库中,联系服务团队排查或升级 ACDG
5.二维码扫描提示未授权
排查方法:检查卡号加密秘钥是否正确
6.二维码扫描提示超时
排查方法:
确认设备时间和平台时间是否一致
抓包并联系设备团队进一步排查
支持设备:IPC(网络摄像机)、IVSS(智能视频分析服务器)、DP(解码器)
1.组织管理
功能描述:管理组织结构,设备通常挂载在组织节点下
操作说明:可以跳过此步骤,直接在设备添加时选择根节点(默认为 001)
2.设备管理
功能描述:管理相关设备,包括查询 IPC 或 IVSS 视频通道
操作说明:当前接口不支持设备的增删改操作,查询视频通道时,通道类型应选择 1
3.部门管理
功能描述:管理部门结构,人员通常挂载在部门节点下
操作说明:可以跳过此步骤,直接在人员添加时选择根节点(默认为 1)
4.人员管理
功能描述:管理人员信息,包括上传照片、增改人员信息等
5.注册库管理
功能描述:管理注册库,库类型选择内部库,并绑定 IPC 或 IVSS 设备
6.人员头像绑定
功能描述:将指定部门下人员的头像下发到注册库
7.人员布控
功能描述:指定注册库与通道,设置相似度进行布控
1.组织管理
功能描述:管理组织结构,设备通常挂载在组织节点下
操作说明:可以跳过此步骤,直接在设备添加时选择根节点(默认为 001)
2.设备管理
功能描述:管理相关设备,包括查询 IPC 或 IVSS 视频通道
操作说明:当前接口不支持设备的增删改操作,查询视频通道时,通道类型应选择 1
3.人员布控 - 人员管理
功能描述:管理布控人员信息,此人员为布控创建人员,非内部人员
操作说明:创建入口位于“人员布控”下的“人员(黑白名单库)”
4.注册库管理
功能描述:管理注册库,库类型选择黑/白名单库,并绑定 IPC 或 IVSS 设备
5.人员布控
功能描述:指定注册库与通道,设置相似度进行布控
人员录入方式区别:
黑白名单库:人员直接在“人员布控”下录入,自动同步到设备
内部库:人员从基础框架的“人员管理”同步到“人员布控”下,需进行人员头像绑定
版本要求:
ICC 框架版本:5.0.6 及以上
人员布控版本:至少为 1.0.3 bugfix 版本
具体要求:详细参考接口文档版本号说明
库类型要求:
内部库:需进行人员头像绑定
黑白名单库:直接录入,自动同步到设备
参考文档:API 文档 -> 附录 -> 事件列表 -> 人员布控
具体报警类型如下:
陌生人报警(1001000):FR设备(设备支持智能分析)上报,未识别人脸记录
人脸检测报警(1001005):FD设备(设备不支持支持智能分析,仅是抓拍)上报,未识别人脸记录
白名单库报警(1001001):库类型为白名单库产生的人员识别记录
黑名单库报警(1001002):库类型为黑名单库产生的人员识别记录
内部员工报警(1001003):库类型为内部库库产生的人员识别记录
访客报警(1001004):库类型为访客库产生的人员识别记录
人体识别报警(1001006):人体特征结构化报警数据,包含的人脸部分,只入库不推报警(注意:人体识别与人脸检测都有数据,实时推送的是人体识别报警,不推送人脸检测报警)
机动车识别报警(1001007):机动车车体特征报警数据
非机动车识别报警(1001008):非机动车车体特征报警数据
日志路径:/log/evo-face/evo-face.log
支持设备:门禁设备、可视对讲设备、道闸设备、人员布控设备
1.组织管理
功能描述:管理组织结构,设备通常挂载在组织节点下
操作说明:可以跳过此步骤,直接在设备添加时选择根节点(默认为 001)
2.设备管理
功能描述:管理相关设备,包括查询 IPC 或 IVSS 视频通道
操作说明:当前接口不支持设备的增删改操作,查询视频通道时,通道类型应选择 1
3.部门管理
功能描述:管理部门结构,人员通常挂载在部门节点下
操作说明:可以跳过此步骤,直接在人员添加时选择根节点(默认为 1)
4.人员管理
功能描述:管理人员信息,包括上传照片、增改人员信息等
5.访客预约
功能描述:创建访客预约,需指定被访人(可从人员管理中查询获取)
6.被访人审批
功能描述:被访人对访客预约进行审批
审批类型:
VIP 访客:审批通过后自动下发权限,无需登记即可进入
普通访客:需在访客机登记后,权限才会下发
7.访客机登记
功能描述:普通访客需在访客机上登记,登记完成后权限才会下发
8.权限下发
功能描述:根据访客类型自动授权相关权限
权限类型:
自动授权通道和自动签离通道
停车场权限
被访人可视对讲设备权限
VIP 访客:
访客预约:被访人审批指定为 VIP 访客类型时,权限自动下发,无需登记即可进入
访客邀约:指定为 VIP 访客类型时,权限自动下发(前提是访客子系统版本为 1.1.0 及以上)
普通访客:
访客预约:被访人审批指定为普通访客类型时,需在访客机登记后权限才会下发
小区访客预约:权限自动下发
访客预约:需经过被访人审批
访客邀约:直接跳过审批环节
自动授权通道和自动签离通道配置:确认是否已正确配置
车辆进入:检查停车场场区是否配置,预约登记是否有记录
访客类型:
VIP 访客:无需访客机登记,直接进入
普通访客:需在访客机登记
人脸五官清晰度:确保人脸五官清晰可见
参考文档:API 文档 -> 附录 -> 事件列表 -> 访客管理
具体事件如下所示:
访客行踪推送(visitor.record):访客通行记录推送
访客状态变更信息(visitor.status):访客状态推送
移动端审核:针对 H5 预约的访客,如果开启,则需被访人或固定审核人进行审核
人证核验:如果开启认证核验,所有访客均需在访客机进行认证比对,才会进行授权,访客状态变更为在访
访客机登记审核:开启后,在访客机现场预约登记的访客,登记后也需被访人或固定审核人进行审核,审核完成后下发权限,状态变更为在访
日志路径:/log/evo-visitor/evo-visitor.log
1.配置场区
功能描述:在平台上配置场区,设置进出放行模式、收费规则,并绑定相关设备
2.绑定场区与车辆
功能描述:通过 API 文档 - 停车管理 - 人员管理下的“添加人员 - 车辆”接口,绑定场区、车辆,并设置有效期
3.充值缴费(可选)
功能描述:为车辆进行充值缴费操作
操作说明:可通过三方支付调用 API 文档 - 停车管理 - “停车预缴费”接口实现
4.手动控制车辆进出(可选)
功能描述:通过 API 文档 - 停车管理 - 接口配置中的“预进场”、“预出场”功能,手动控制车辆进出
5.实时接收抓拍记录(可选)
功能描述:实时接收道闸设备产生的抓拍记录
操作说明:参考 API 文档 - 事件中心 - 事件订阅接口,订阅业务事件(类型为 car.capture)或通过接口配置订阅车辆进场/出场数据
车辆管控建议:推荐对接停车场的人员与车辆管理模块,该模块包含停车场业务的关键信息(如场区信息、用户类型
基础框架限制:基础框架的人员、车辆不包含场区信息和用户类型,直接添加的车辆无法在停车场进行有效管控,不推荐直接使用基础框架接口对接停车场业务
内部人员:通过停车场模块添加的人员,包含场区信息,可用于停车场业务管理
未定义人员:通过基础框架添加的人员,缺少场区信息,若需用于停车场业务,需将其转为内部人员
车辆中的场区:用于管控车辆进出,可在无人员(车主)的情况下设置黑白名单
人员中的场区:用于处理收费,只有当人员与车辆的场区取交集时,按用户类型收费;其他情况按临时用户收费
收费情况:白名单车辆进出场区不收费
车辆信息中的黑名单:所有设备都无法通行
设备黑名单管理:可针对指定道闸设备设置黑名单,实现更细粒度的管控
停车管理:通过道闸设备产生的过车记录,对接的是停车场模块
交通卡口:通过卡口设备产生的过车记录,对接的是卡口模块
事件订阅:可实时推送停车场抓拍记录、车辆进出记录、停车场报警数据,数据不加密
接口配置:可实时推送停车场抓拍记录、车辆进出记录、车辆预进场/预出场记录,数据加密传输
推荐场景:
预进场/预出场记录:手动控制开闸,推荐对接接口配置功能
其他场景:推荐使用事件订阅功能
问题原因:道闸一体机处理时,基础资源的设备编码需进行特定转换
转换规则:
道闸一体机:相机编号(基础框架设备编码)为 n,则道闸编号为 n+1,LED 编号为 n+2
宗旨:使用停车场的道闸通道编码进行控制,不可使用基础资源下的道闸通道编码
示例:
基础资源下设备编码:1000001,对应的基础资源下道闸通道为 1000001$14$0$0
正确请求示例:{"channelId":"1000002$14$0$0","operateType":1}
日志路径:/log/ipms/ipms.log
控制顺序:
1.黑白名单管理(最高优先级)
2.接口配置功能
3.预约登记
4.车辆/人员绑定场区控制(最低优先级)