GET /ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json
无
{
"isSupportVideoTask": true,
/*ro, opt, bool, 设备是否支持视频分析任务的能力*/
"isSupportVideoPollingAnalysisTask": true,
/*ro, opt, bool, 设备是否支持视频分析轮询任务的能力*/
"isSupportPictureTask": true,
/*ro, opt, bool, 设备是否支持图片分析任务的能力*/
"isSupportPicturePollingAnalysisTask": true,
/*ro, opt, bool, 设备是否支持抓图轮询任务的能力*/
"isSupportHistoryVideoTask": true,
/*ro, opt, bool, 设备是否支持历史视频分析任务的能力*/
"isSupportResetEngine": true,
/*ro, opt, bool, 设备是否支持芯片重置的能力*/
"isSupportUploadModelwithURL": true,
/*ro, opt, bool, 设备是否支持按照URL导入算法模型的方案的能力*/
"isSupportUploadModelwithPushBinaryData": true,
/*ro, opt, bool, 设备是否支持以二进制数据的方式导入算法模型的方案的能力*/
"isSupportAIRuleConfig": true,
/*ro, opt, bool, 设备是否支持AI规则配置的能力*/
"isSupportAIIntelligentSearch": true,
/*ro, opt, bool, 设备是否支持AI智能检索的能力*/
"isSupportAIPictureUpLoad": true,
/*ro, opt, bool, 设备是否支持AI图片(二进制)批量下发*/
"isSupportAuthorizationModel": true,
/*ro, opt, bool, 设备是否支持授权模型*/
"isSupportPresetAIRuleConfig": true,
/*ro, opt, bool, 设备是否支持预置点AI规则配置能力的能力*/
"isSupportModelSchedule": true,
/*ro, opt, bool, 设备是否支持模型调度能力*/
"isSupportEventTrigger": true,
/*ro, opt, bool, 设备是否支持联动配置能力*/
"isSupportOSDConfig": true,
/*ro, opt, bool, 设备是否支持OSD叠加配置能力*/
"isSupportConfidenceConfig": true,
/*ro, opt, bool, 设备是否支持AI规则配置中置信度配置的能力, dep:and,{当isSupportAIRuleConfig,eq,true}, desc:当isSupportAIRuleConfig=true时该节点有效*/
"isSupportOCRDetection": true,
/*ro, opt, bool, 设备是否支持OCR检测模型导入*/
"isSupportAIRuleOverlay": true,
/*ro, opt, bool, 设备是否支持AI规则框在视频预览时的叠加使能配置能力*/
"isSupportAITargetOverlay": true,
/*ro, opt, bool, 设备是否支持AI目标框在视频预览时的叠加使能配置能力*/
"isSupportAIRuleCount": true,
/*ro, opt, bool, 设备是否支持AI跨线规则手动计数*/
"isSupportAIRuleCapabilities": true,
/*ro, opt, bool, 设备是否支持AI规则能力获取, desc:支持的话上层通过能力接口/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<ID>/channels/<ID>/capabilities?format=json获取支持的参数(不包括算法透传参数、上报时间间隔、OSD字符叠加配置、规则框与目标框在视频预览中的叠加功能*/
"isSupportContrast": true,
/*ro, opt, bool, 设备是否支持比对模型导入, desc:目标检测比对模型包*/
"isSupportBehavior": true,
/*ro, opt, bool, 设备是否支持异常行为识别分析模型包导入, desc:AI算法实现异常行为识别,不是专业智能异常行为识别检测*/
"isSupportAIRuleCountManualReset": true,
/*ro, opt, bool, 设备是否支持跨线目标计数手动清零, desc:/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/channels/<channelID>/manualReset?format=json*/
"isSupportAITargetLibrary": true,
/*ro, opt, bool, 设备是否支持AI目标比对库, desc:/ISAPI/Intelligent/AIOpenPlatform/AITargetLibrary/capabilities?format=json*/
"isSupportAITargetBP": true,
/*ro, opt, bool, 设备是否支持AI目标比对基准图片(导入、修改、删除、下载)的能力, desc:返回该能力,不一定支持/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/capabilities?format=json,若不未返回,则使用能力中的默认值*/
"isSupportAIRuleTrigger": true
/*ro, opt, bool, 设备是否支持AI规则联动的能力, desc:/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/channels/<ID>/trigger/capabilities?format=json*/
}
GET /ISAPI/Intelligent/AIOpenPlatform?format=json
无
{
"algorithmVersion": "AV1.5.0",
/*ro, req, string, 表示HCNN算法版本, range:[,], desc:该数值的字典由研究院统一提供,用于算法模型的匹配*/
"firmware": "FW006",
/*ro, req, string, 表示固件版本, range:[,], desc:该数值的字典由研究院统一提供,用于算法模型的匹配*/
"engine": [1, 2, 3, 4],
/*ro, req, array, 引擎编号, subType:int, range:[,], desc:设备计算能力*/
"platform": 1,
/*ro, req, enum, 算法运行平台, subType:int, [1#TX1,2#P4,3#3559,4#3519,5#3516,6#H930/KT2,7#T4], desc:H930和KT2是同一种芯片的不同名称*/
"platformName": "K81",
/*ro, req, string, 算法运行平台对外展现名称, range:[,], desc:产品自定义,该字段仅用于直接展现。 K81--后端NVR,KT--数据中心,H5--前端; H7--前端,K82--后端NVR; G3--前端; GW-H5 --物联网主机(B80、B81);*/
"loadMPMaxNum": 4,
/*ro, opt, int, 单个计算引擎支持加载算法包的个数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段,用于集成用户判断计算引擎还能加载的模型个数(当前只有物联网主机产品实现)。*/
"maxRelChannelNum": 64
/*ro, opt, int, 设备支持关联通道最大数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段,用于集成用户判断设备总共能支持多少路通道分析(当前只有物联网主机产品实现)。*/
}
POST /ISAPI/Intelligent/AIOpenPlatform/algorithmModel?format=json
{
"engine": [1, 2, 3, 4],
/*opt, array, 用于区分不同引擎中运行的模型, subType:int, range:[,], desc:用于区分不同引擎中运行的模型,当不填写该字段的时候表示不做绑定,只存储在设备内部,如果携带engine,默认进行绑定*/
"MPID": "example",
/*req, string, 模型包ID, range:[0,64], desc:由业务平台管理,设备透传记录,用于区分模型包信息*/
"URL": "http://example",
/*opt, string, 算法模型包下载的URL, range:[0,256], desc:业务平台需要保证下发到设备的模型下载URL是有效可访问的,鉴权需要在URL中实现*/
"MPName": "example",
/*opt, string, 模型包名称, range:[0,128], desc:用户可以自定义模型包名称*/
"description": [
/*opt, array, description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件, subType:object, range:[,]*/
{}
],
"algSortingParams": {},
/*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库,增加一个节点透传编排平台的算法参数,告知WEB如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
"authorized": true,
/*opt, bool, 是否为授权模型*/
"appID": "example",
/*opt, string, 训练任务ID生成的appID, range:[0,64], desc:用户提交训练任务后,后台执行模型训练操作(该步骤与原有步骤相同),Saas保存训练任务ID作appID*/
"licenseKeyUrl": "https://example"
/*opt, string, licenseKey文件下载的URL, range:[0,256], desc:licenseKey文件下载的URL,业务平台需要保证下发到设备下载licenseKeyURL是有效可访问的,鉴权需要在URL中实现*/
}
{
"requestURL": "/ISAPI/Intelligent/FDLib/asyncImportDatas?format=json",
/*ro, opt, string, 请求URL, range:[,]*/
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/progress/<MPID>?format=json
无
{
"percent": 100
/*ro, req, int, 设备算法下载模型进度, range:[0,100], step:, unit:, unitType:, desc:0-表示尚未开始,100-表示下载完成,在进度为100的时候,需要重启设备生效*/
}
PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>/reset?format=json
无
{
"requestURL": "/ISAPI/Intelligent/FDLib/asyncImportDatas?format=json",
/*ro, opt, string, 请求URL, range:[,]*/
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engines?format=json
无
{
"LoadingInfoList": [
/*ro, req, array, 引擎状态信息列表, subType:object, range:[,]*/
{
"engine": 1,
/*ro, req, int, 用于区分不同引擎编号, range:[,], step:, unit:, unitType:*/
"status": 1,
/*ro, req, enum, 引擎状态信息, subType:int, [0#模型包尚未加载,1#模型包加载&运行良好,2#模型包运行异常,3#模型解密失败,10#引擎初始化中,11#引擎异常,12#当前引擎用作人脸智能使用]*/
"MPID": "example",
/*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型包信息*/
"MPName": "example",
/*ro, req, string, 模型包名称, range:[0,128]*/
"description": [
/*ro, opt, array, 模型描述信息, subType:object, range:[,], desc:description*/
{}
],
"algSortingParams": {},
/*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库,增加一个节点透传编排平台的算法参数,告知WEB如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
"relVideoChannelNum": 4,
/*ro, opt, int, 该引擎已关联视频通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。用于集成用户展示已关联的视频通道数(当前只有物联网主机产品实现)。*/
"surplusVideoChannelNum": 1,
/*ro, opt, int, 剩余可关联视频通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的视频通道(当前只有物联网主机产品实现)。*/
"relPictureChannelNum": 4,
/*ro, opt, int, 该引擎已关联图片通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。用于集成用户展示已关联的图片通道数(当前只有物联网主机产品实现)。*/
"surplusPictureChannelNum": 1
/*ro, opt, int, 剩余可关联图片通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的图片通道(当前只有物联网主机产品实现)。*/
}
]
}
GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>?format=json
无
{
"LoadingInfo": {
/*ro, req, object, 引擎状态信息*/
"status": 1,
/*ro, req, enum, 引擎状态信息, subType:int, [0#模型包尚未加载,1#模型包加载&运行良好,2#模型包运行异常,3#模型解密失败,10#引擎初始化中,11#引擎异常,12#当前引擎用作人脸智能使用]*/
"MPID": "example",
/*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型包信息*/
"MPName": "example",
/*ro, req, string, 模型包名称, range:[0,128]*/
"description": [
/*ro, opt, array, 模型描述信息, subType:object, range:[,], desc:description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件*/
{}
],
"algSortingParams": {},
/*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库,增加一个节点透传编排平台的算法参数,告知WEB如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
"relVideoChannelNum": 4,
/*ro, opt, int, 该引擎已关联视频通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。用于集成用户展示已关联的视频通道数(当前只有物联网主机产品实现)。*/
"surplusVideoChannelNum": 1,
/*ro, opt, int, 剩余可关联视频通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的视频通道(当前只有物联网主机产品实现)。*/
"relPictureChannelNum": 4,
/*ro, opt, int, 该引擎已关联图片通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。用于集成用户展示已关联的图片通道数(当前只有物联网主机产品实现)。*/
"surplusPictureChannelNum": 1
/*ro, opt, int, 剩余可关联图片通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的图片通道(当前只有物联网主机产品实现)。*/
}
}
PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/loading/<engineID>?format=json
{
"MPID": "example",
/*req, string, 模型ID, range:[0,64], desc:由业务平台管理,设备透传记录,用于区分模型包信息*/
"MPName": "example"
/*opt, string, 模型包名称, range:[0,128]*/
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/unloading/<engineID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space?format=json
无
{
"totalCapacity": 1024,
/*ro, req, int, 设备支持存储模型包的总容量, range:[,], step:, unit:MB, unitType:信息量*/
"surplusCapacity": 1024,
/*ro, req, int, 设备剩余支持存储模型包的总容量, range:[,], step:, unit:MB, unitType:信息量*/
"MPNumbers": 1
/*ro, req, int, 设备支持的模型包总个数, range:[,], step:, unit:, unitType:*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space/<MPID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json
无
{
"AlgorithmModels": [
/*ro, req, array, 算法模型信息列表, subType:object, range:[,]*/
{
"MPID": "example",
/*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型信息*/
"MPName": "example",
/*ro, req, string, 模型包名称, range:[0,128]*/
"status": 1,
/*ro, req, int, 状态信息, range:[,], step:, unit:, unitType:*/
"engine": [1, 2],
/*ro, opt, array, 一个模型有可能在多个engine上运行, subType:int, range:[,], desc:一个模型有可能在多个engine上运行,所以使用数组方式,用于区分不同引擎中运行的模型,如果没有返回engine字段,则表示对应的MPID没有和engine加载,反之则表示加载*/
"description": [
/*ro, opt, array, description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件, subType:object, range:[,]*/
{}
],
"algSortingParams": {}
/*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库,增加一个节点透传编排平台的算法参数,告知WEB如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
}
]
}
PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/update?format=json
{
"MPID": "example",
/*req, string, 模型ID, range:[0,64], desc:由业务平台管理,设备透传记录,用于区分模型包信息*/
"URL": "example",
/*opt, string, 算法模型下载的URL, range:[0,256], desc:业务平台需要保证下发到设备的模型下载URL是有效可访问的,鉴权需要在URL中实现*/
"MPName": "example",
/*opt, string, 模型包名称, range:[0,128]*/
"description": [
/*opt, array, description节点为可选节点, subType:object, range:[,], desc:来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件,需要从文件中整段截取"description"节点*/
{}
],
"algSortingParams": {}
/*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库,增加一个节点透传编排平台的算法参数,告知WEB如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/videoTask/capabilities?format=json
无
{
"tasksNum": 1,
/*ro, req, int, 设备支持的并发任务数, range:[,], step:, unit:, unitType:*/
"taskIDLen": {
/*ro, req, object, 任务ID长度范围*/
"@min": 0,
/*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 64
/*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:, unitType:*/
},
"engine": {
/*ro, req, object, 支持的引擎编号*/
"@opt": [1, 2, 3, 4]
/*ro, req, array, 引擎编号数组, subType:int, range:[,]*/
},
"channel": {
/*ro, opt, object, 设备通道号, desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"@opt": [1, 2]
/*ro, req, array, 设备通道号数组, subType:int, range:[,]*/
},
"Stream": {
/*ro, opt, object, 实时流码流信息, desc:Stream和channel二选一*/
"streamType": {
/*ro, req, object, 流类型, desc:[realTime#远程实时流,historyVideo#远程历史录像],默认实时流*/
"@opt": ["realTime", "historyVideo"]
/*ro, req, array, 可选值, subType:string, range:[,]*/
},
"streamSourceType": {
/*ro, req, object, 取流方式,
desc:[URL #中心URL取流方式,Camera#根据接入协议进行取流]
2、根据(设备接入到平台)接入协议进行取流,是根据接入协议,然后设备通道接入协议,获取对应的取流rtsp的URL,进行取流。分为两种情况
a、不需要添加设备。本地直连模式下发分析设备IP、PORT、用户名、密码、通道信息、设备添加协议类型(Onvif/SDK),设备通过这些信息获取到相机的取流信息,进行直连取流
b、需要添加设备。添加设备的情况,就不需要用户名和密码,直接通过唯一标识。映射模式,如ISUP的场景,需要事先在思维盒上完成设备添加,并配置deviceID, 任务中下发deviceID以及通道信息,思维盒根据deviceID和通道映射得到对应的取流信息,直连设备进行取流*/
"@opt": ["URL", "Camera"]
/*ro, opt, array, 可选值, subType:string, range:[,]*/
},
"StreamSourceList": [
/*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": {
/*ro, req, object, 监控点编号,
desc:虚拟出该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>),
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 64
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"isSupportTargetAttrs": true,
/*ro, opt, bool, 是否支持透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*ro, opt, object, 中心取流信息, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为sURL时有效。中心取流是平台可以自己组装取流的URL*/
"URLMode": {
/*ro, opt, object, 取流URL类型, desc:RTSP#RTSP协议,DAC#DAC组件取流,desc:不填写该字段,默认为RTSP协议取流*/
"@opt": ["DAC", "RTSP"]
/*ro, opt, array, 可选值 , subType:string, range:[,]*/
},
"URL": {
/*ro, req, object, RTSP URL取流*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 1024
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, opt, object, 用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, opt, object, 密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
},
"Camera": {
/*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": {
/*ro, opt, object, 设备接入(任务下发方)平台的协议, desc:[Private#海康私有协议,Onvif#Onvif],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"@opt": ["Private", "Onvif", "ISUP"],
/*ro, req, array, 可选值, subType:string, range:[,]*/
"@def": "Private"
/*ro, req, string, 默认值, range:[,]*/
},
"StreamingViaIP": {
/*ro, opt, object, 通过IP取流, desc:依赖于 proxyProtocol == Private,ONVIF*/
"ipV4Address": {
/*ro, opt, object, IPV4地址*/
"@min": 0,
/*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 32
/*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
},
"port": {
/*ro, req, object, 端口号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 65535
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, req, object, 用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, req, object, 密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"channel": {
/*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
},
"StreamingViaDeviceID": {
/*ro, opt, object, 本地直连取流信息, desc:依赖于 proxyProtocol == ISUP*/
"deviceID": {
/*ro, req, object, 设备ID, desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"@min": 0,
/*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
},
"channel": {
/*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
}
},
"RecordTime": {
/*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"frameRate": {
/*ro, req, object, 检测帧率*/
"@opt": [2500, 3000]
/*ro, req, array, 检测帧率数组, subType:int, range:[,]*/
},
"alertInterval": {
/*ro, opt, object, 报警间隔, desc:报警间隔,1s/次 赋值 1;1s两次 赋值 0.5*/
"@opt": [1, 0.5],
/*ro, opt, array, 报警间隔支持的值数组, subType:float, range:[,]*/
"@def": 0.5
/*ro, opt, float, 报警间隔默认值, range:[,], step:, unit:, unitType:*/
},
"isSupportTimeRange": true,
/*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位,默认单天8个时间段*/
"alarmTargetOverlay": {
/*ro, opt, object, 报警目标框叠加使能*/
"@opt": ["true", "false"]
/*ro, opt, array, 使能选项, subType:string, range:[,]*/
},
"alarmRuleOverlay": {
/*ro, opt, object, 报警规则信息叠加使能*/
"@opt": [true, false]
/*ro, opt, array, 使能选项, subType:bool, range:[,]*/
},
"alarmRuleOverlayCap": {
/*ro, opt, object, 报警规则信息叠加元素能力, desc:叠加报警事件对应的ruleID规则ID(序号)、ruleName规则名称*/
"@opt": ["ruleID", "ruleName"]
/*ro, opt, array, 可选值, subType:string, range:[,]*/
},
"EventTrigger": {
/*ro, opt, object, 任务联动配置能力, desc:不返回该节点表示不支持联动配置*/
"notificationMethod": {
/*ro, opt, object, 联动方式*/
"@opt": ["email", "IM", "IO", "syslog", "HTTP", "FTP", "beep", "ptz", "record", "monitorAlarm", "center", "LightAudioAlarm", "focus", "trace", "cloud", "SMS", "whiteLight"],
/*ro, req, array, 设备支持的联动方式, subType:string, range:[,]*/
"@def": "center"
/*ro, req, string, 默认联动方式, range:[,]*/
}
},
"maxRelChannelNum": 2,
/*ro, opt, int, 单个实时视频任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": {
/*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
"@opt": ["AlarmRMQ", "ServerClient", "ServerHCS"]
/*ro, opt, array, 可选值 , subType:string, range:[,]*/
},
"destinationURL": {
/*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 1024
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, opt, object, 结果接收方用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, opt, object, 结果接收方密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
}
]
}
POST /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json
{
"taskID": "example",
/*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*req, int, 用于区分不同引擎中运行的模型, range:[,], step:, unit:, unitType:*/
"channel": [1, 2],
/*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"Stream": {
/*opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"TargetAttrs": {},
/*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景。*/
"URLMode": "DAC",
/*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
desc:不填写该字段,默认为RTSP协议取流。
DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
"URL": "test",
/*req, string, 取流url, range:[0,1024]*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"frameRate": 2500,
/*req, int, (frame rate)*100 检测帧率, range:[,], step:, unit:, unitType:*/
"alertInterval": 0.5,
/*opt, float, 报警间隔, range:[0,2000], step:, unit:, unitType:, desc:1s/次,赋值 1;1s两次,赋值 0.5*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段,desc:该节点对于历史流无效*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true,
/*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
"EventTrigger": [
/*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]*/
"outputIOPortID": "1",
/*opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*opt, string, 模拟通道号(用于表示联动哪个通道进行操作, range:[,]*/
"dynOutputIOPortID": "1"
/*opt, string, 数字通道号(用于表示联动哪个通道进行操作, range:[,]*/
}
],
"Destination": [
/*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
"destinationURL": "test",
/*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok",
/*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
"channelID": [1, 2, 3]
/*ro, opt, array, 失败的通道号, subType:int, range:[,], desc:多通道任务时,部分通道因为分辨率的问题,可能任务下发失败,所以此处返回失败的通道号,成功时,不返回*/
}
PUT /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json
{
"channel": [1, 2],
/*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"Stream": {
/*opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"TargetAttrs": {},
/*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
"URLMode": "DAC",
/*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
desc:不填写该字段,默认为RTSP协议取流。
DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
"URL": "test",
/*req, string, 取流url, range:[0,1024]*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"frameRate": 2500,
/*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100*/
"alertInterval": 0.5,
/*opt, float, 报警间隔, range:[0,2000], step:, unit:, unitType:, desc:1s/次,赋值 1;1s两次,赋值 0.5*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段;该节点对于历史流无效*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true,
/*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
"EventTrigger": [
/*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]*/
"outputIOPortID": "1",
/*opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
"dynOutputIOPortID": "1"
/*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
}
],
"Destination": [
/*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
"destinationURL": "test",
/*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json
无
{
"Tasks": [
/*ro, req, array, 任务信息列表, subType:object, range:[,]*/
{
"taskID": "example",
/*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*ro, req, int, 引擎编号ID, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"channel": [1, 2],
/*ro, req, array, 设备通道号, subType:int, range:[,]*/
"Stream": {
/*ro, opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*ro, req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*ro, req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*ro, req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"TargetAttrs": {},
/*ro, opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*ro, opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
"URLMode": "DAC",
/*ro, opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
desc:不填写该字段,默认为RTSP协议取流。
DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
"URL": "test",
/*ro, req, string, 取流url, range:[0,1024]*/
"userName": "admin",
/*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*ro, opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*ro, opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*ro, opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*ro, opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*ro, opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*ro, opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"frameRate": 2500,
/*ro, req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100 =检测帧率*/
"alertInterval": 0.5,
/*ro, opt, float, 报警间隔, range:[,], step:, unit:, unitType:*/
"status": 0,
/*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
"TimeRange": [
/*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段;该节点对于历史流无效*/
{
"week": 1,
/*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*ro, req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*ro, req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*ro, opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true,
/*ro, opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
"EventTrigger": [
/*ro, opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*ro, req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]*/
"outputIOPortID": "1",
/*ro, opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*ro, opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
"dynOutputIOPortID": "1"
/*ro, opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
}
],
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
"destinationURL": "test",
/*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
]
}
GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask/capabilities?format=json
无
{
"tasksNum": 1,
/*ro, req, int, 设备支持任务数, range:[,], step:, unit:, unitType:*/
"taskIDLen": {
/*ro, req, object, 任务ID长度范围*/
"@min": 0,
/*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:Byte, unitType:信息量*/
"@max": 64
/*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:Byte, unitType:信息量*/
},
"engine": {
/*ro, req, object, 引擎编号ID范围*/
"@opt": [1, 2, 3, 4]
/*ro, req, array, 引擎编号ID可选值, subType:int, range:[,]*/
},
"analysisURLs": 100,
/*ro, req, int, 单次图片任务能够处理的URL的最大数量, range:[,], step:, unit:, unitType:*/
"pictureType": {
/*ro, opt, object, 图片类型范围*/
"@opt": ["binary", "url"]
/*ro, opt, array, 返回设备支持的图片类型, subType:string, range:[,]*/
},
"alarmTargetOverlay": {
/*ro, opt, object, 报警目标框叠加使能*/
"@opt": ["true", "false"]
/*ro, opt, array, 使能选项, subType:string, range:[,]*/
},
"PictureCap": {
/*ro, opt, object, 图片能力, desc:不返回此节点全都为默认值*/
"MaxResolution": {
/*ro, opt, object, 支持最大分辨率, desc:默认最大4096*4096*/
"width": 4096,
/*ro, opt, int, 最大横向分辨率, range:[,], step:, unit:px, unitType:图像显示*/
"height": 4096
/*ro, opt, int, 最大纵向分辨率, range:[,], step:, unit:px, unitType:图像显示*/
},
"maxSize": 2097152,
/*ro, opt, int, 文件最大字节数, range:[,], step:, unit:Byte, unitType:信息量, desc:默认5 MB*/
"supportFormat": ["JPG", "BMP", "PNG", "GIF", "TIF"],
/*ro, opt, array, 支持的图片格式, subType:string, range:[,], desc:默认只支持JPG*/
"AIRuleConfig": {
/*ro, opt, object, 有此节点表示支持图片IED配置*/
"@min": 0,
/*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 100000
/*ro, opt, int, 每个图片的AIRuleConfig最大文本长度, range:[,], step:, unit:, unitType:, desc:@max*analysisURLs的值应该小于传输链路报文最大限制(比如萤石单次请求最大报文256KB)*/
},
"AITaskType": {
/*ro, opt, object, AI比对任务类型, desc:[AITargetBPTask#AI基准图比对任务],desc:不填默认就是常规任务*/
"@opt": ["AITargetBPTask"]
/*ro, req, array, 可选值, subType:string, range:[,]*/
},
"cameraIndexCode": {
/*ro, opt, object, 监控点ID, desc:,该监控点ID目前仅对基准图比对任务(AITaskType = AITargetBPTask)有效。表示关联的图集信息*/
"@min": 0,
/*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 64
/*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
}
},
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": {
/*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
"@opt": ["AlarmRMQ", "ServerClient", "ActiveMQ"]
/*ro, opt, array, 可选值 , subType:string, range:[,]*/
},
"destinationURL": {
/*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 1024
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, opt, object, 结果接收方用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, opt, object, 结果接收方密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
}
]
}
POST /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json
{
"taskID": "example",
/*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"URLs": [
/*opt, array, 图片URL列表, subType:object, range:[,]*/
{
"PID": "example",
/*req, string, 图片id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"URL": "example",
/*req, string, 图片下载的URL, range:[0,256], desc:业务平台需要保证下发的下载URL是有效可访问的,鉴权需要在URL中实现*/
"AIRuleConfig": {
/*opt, object, 将研究院提供的AI算法参数填入此处, desc:以下为填写示例*/
"VCA_config": {
/*opt, object, AI规则参数*/
"ApplicationInfo": [
/*opt, array, 应用模块的配置信息, subType:object, range:[,]*/
{}
],
"ConfigInfo": {}
/*opt, object, 配置模块信息*/
}
},
"AITaskType": "AITargetBPTask",
/*opt, enum, AI比对任务类型, subType:string, [AITargetBPTask#AI基准图比对任务]*/
"cameraIndexCode": "UUIDTest"
/*opt, string, 监控点ID , range:[0,64], dep:and,{$.URLs[*].AITaskType,eq,AITargetBPTask}, desc:该监控点ID目前仅对基准图比对任务(AITaskType = AITargetBPTask)有效。表示关联的图集信息*/
}
],
"pictureType": "binary",
/*opt, enum, 发送图片类型, subType:, [binary#二进制图片,url#url图片], desc:该节点不传时表示默认采用二进制图片*/
"RegionCoordinatesList": [
/*opt, array, 图片检测区域点坐标列表, subType:object, range:[,]*/
{
"positionX": 0.653,
/*req, float, X坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
"positionY": 0.653
/*req, float, Y坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ActiveMQ#ActiveMQ,ServerHCS#微视云,ActiveMQ#ActiveMQ], desc:具体取值参考字典*/
"destinationURL": "test",
/*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/pictureTask/<taskID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json
无
{
"Tasks": [
/*ro, req, array, 任务信息列表, subType:object, range:[,]*/
{
"taskID": "example",
/*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"unfinishedPids": ["exampleA", "exampleB"],
/*ro, req, array, 未完成分析的图片id, subType:string, range:[,], desc:图片ID长度最大为64字节*/
"status": 1,
/*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
"pictureType": "binary",
/*ro, opt, enum, 发送图片类型, subType:, [binary#二进制图片,url#url图片], desc:该节点不传时表示默认采用二进制图片*/
"RegionCoordinatesList": [
/*ro, opt, array, 图片检测区域点坐标列表, subType:object, range:[,]*/
{
"positionX": 0.653,
/*ro, req, float, X坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
"positionY": 0.653
/*ro, req, float, Y坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
}
],
"alarmTargetOverlay": true,
/*ro, opt, bool, 报警目标框叠加使能*/
"URLs": [
/*ro, opt, array, 图片信息, subType:object, range:[,]*/
{
"PID": "test",
/*ro, req, string, 图片id, range:[,]*/
"URL": "test",
/*ro, opt, string, 图片下载的URL, range:[,]*/
"AIRuleConfig": {
/*ro, opt, object, 将研究院提供的AI算法参数填入此处, desc:以下为填写示例*/
"VCA_config": {
/*ro, opt, object, AI规则参数*/
"ApplicationInfo": [
/*ro, opt, array, 应用模块的配置信息, subType:object, range:[,]*/
{}
],
"ConfigInfo": {}
/*ro, opt, object, 配置模块信息*/
}
}
}
]
}
]
}
GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/capabilities?format=json
无
{
"tasksNum": 1,
/*ro, req, int, 设备支持任务数, range:[,], step:, unit:, unitType:*/
"taskIDLen": {
/*ro, req, object, 任务ID长度范围*/
"@min": 0,
/*ro, req, int, 任务ID长度的最小值, range:[,], step:, unit:Byte, unitType:信息量*/
"@max": 64
/*ro, req, int, 任务ID长度的最大值, range:[,], step:, unit:Byte, unitType:信息量*/
},
"engine": {
/*ro, req, object, 引擎编号范围*/
"@opt": [1, 2, 3, 4]
/*ro, req, array, 引擎编号取值, subType:int, range:[,]*/
},
"channel": {
/*ro, req, object, 设备通道号范围*/
"@opt": [1, 2]
/*ro, req, array, 设备通道号取值, subType:int, range:[,]*/
},
"frameRate": {
/*ro, req, object, 检测帧率范围*/
"@opt": [2500, 3000]
/*ro, req, array, 检测帧率取值, subType:int, range:[,], desc:(frame rate)*100 =检测帧率*/
},
"alertInterval": {
/*ro, opt, object, 报警间隔范围*/
"opt": [1, 0.5]
/*ro, opt, array, 报警间隔取值, subType:float, range:[,], desc:1s/次 赋值 1;1s两次 赋值 0.5*/
},
"pollingTime": {
/*ro, opt, object, 视频轮询时间范围*/
"@min": 1,
/*ro, opt, int, 视频轮询时间最小值, range:[,], step:, unit:s, unitType:时间*/
"@max": 65535,
/*ro, opt, int, 视频轮询时间最大值, range:[,], step:, unit:s, unitType:时间*/
"@def": 1
/*ro, req, int, 视频轮询时间默认值, range:[,], step:, unit:s, unitType:时间*/
},
"status": {
/*ro, opt, object, 任务状态值范围*/
"@opt": [0, 1, 2, 3]
/*ro, req, array, 任务状态信息取值, subType:int, range:[,], desc:0为未执行,1为执行中,2为执行异常,3位排队等待*/
},
"isSupportTimeRange": true,
/*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位,默认单天8个时间段*/
"alarmTargetOverlay": {
/*ro, opt, object, 报警目标框叠加使能*/
"@opt": ["true", "false"]
/*ro, opt, array, 使能选项, subType:string, range:[,]*/
},
"alarmRuleOverlay": {
/*ro, opt, object, 报警规则信息叠加使能*/
"@opt": [true, false]
/*ro, opt, array, 使能选项, subType:bool, range:[,]*/
},
"alarmRuleOverlayCap": {
/*ro, opt, object, 报警规则信息叠加元素能力, desc:叠加报警事件对应的ruleID规则ID(序号)、ruleName规则名称*/
"@opt": ["ruleID", "ruleName"]
/*ro, opt, array, 可选值, subType:string, range:[,]*/
},
"maxRelChannelNum": 16
/*ro, opt, int, 单个视频轮询任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
}
POST /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json
{
"taskID": "example",
/*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"channel": [1, 2],
/*req, array, 设备通道号, subType:int, range:[,]*/
"frameRate": 2500,
/*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
"alertInterval": 0.5,
/*opt, float, 报警间隔, range:[,], step:, unit:, unitType:*/
"pollingTime": 60,
/*req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true
/*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
PUT /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json
{
"channel": [1, 2],
/*req, array, 设备通道号, subType:int, range:[,]*/
"frameRate": 2500,
/*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
"alertInterval": 0.5,
/*opt, float, 报警间隔, range:[,], step:, unit:, unitType:, desc:1s/次 赋值 1;1s两次 赋值 0.5*/
"pollingTime": 60,
/*req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true
/*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json
无
{
"Tasks": [
/*ro, req, array, 任务信息列表, subType:object, range:[,]*/
{
"taskID": "example",
/*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"channel": [1, 2],
/*ro, req, array, 设备通道号, subType:int, range:[,]*/
"frameRate": 2500,
/*ro, req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
"alertInterval": 0.5,
/*ro, opt, float, 报警间隔, range:[,], step:, unit:, unitType:, desc:1s/次 赋值 1;1s两次 赋值 0.5*/
"pollingTime": 60,
/*ro, req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
"status": 1,
/*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
"TimeRange": [
/*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段*/
{
"week": 1,
/*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*ro, req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*ro, req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*ro, opt, bool, 报警目标框叠加使能*/
"alarmRuleOverlay": true
/*ro, opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID(序号)、规则名称*/
}
]
}
GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/capabilities?format=json
无
{
"tasksNum": 1,
/*ro, req, int, 设备支持的并发任务数, range:[,], step:, unit:, unitType:*/
"taskIDLen": {
/*ro, req, object, 任务ID长度范围*/
"@min": 0,
/*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:Byte, unitType:信息量*/
"@max": 64
/*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:Byte, unitType:信息量*/
},
"engine": {
/*ro, req, object, 支持的引擎编号*/
"@opt": [1, 2, 3, 4]
/*ro, req, array, 引擎编号数组, subType:int, range:[,]*/
},
"channel": {
/*ro, opt, object, 设备通道号, desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"@opt": [1, 2]
/*ro, req, array, 设备通道号数组, subType:int, range:[,]*/
},
"Stream": {
/*ro, opt, object, 实时流码流信息, desc:Stream和channel二选一*/
"streamType": {
/*ro, req, object, 流类型, desc:[realTime#远程实时流,historyVideo#远程历史录像],默认实时流*/
"@opt": ["realTime", "historyVideo"]
/*ro, req, array, 可选值, subType:string, range:[,]*/
},
"streamSourceType": {
/*ro, req, object, 取流方式,
desc:[URL #中心URL取流方式,Camera#根据接入协议进行取流]
2、根据(设备接入到平台)接入协议进行取流,是根据接入协议,然后设备通道接入协议,获取对应的取流rtsp的URL,进行取流。分为两种情况
a、不需要添加设备。本地直连模式下发分析设备IP、PORT、用户名、密码、通道信息、设备添加协议类型(Onvif/SDK),设备通过这些信息获取到相机的取流信息,进行直连取流
b、需要添加设备。添加设备的情况,就不需要用户名和密码,直接通过唯一标识。映射模式,如ISUP的场景,需要事先在思维盒上完成设备添加,并配置deviceID, 任务中下发deviceID以及通道信息,思维盒根据deviceID和通道映射得到对应的取流信息,直连设备进行取流*/
"@opt": ["URL", "Camera"]
/*ro, opt, array, 可选值, subType:string, range:[,]*/
},
"StreamSourceList": [
/*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode ": {
/*ro, req, object, 自定义设备本地通道号(实际设备没有接入到分析设备内),
desc:虚拟出该通道号的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>),
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 64
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"AITaskType": {
/*ro, opt, object, AI比对任务类型, desc:[AITargetBPTask#AI基准图比对任务],desc:每天默认常规任务*/
"@opt": ["AITargetBPTask"]
/*ro, req, array, 可选值, subType:string, range:[,]*/
},
"isSupportTargetAttrs": true,
/*ro, opt, bool, 是否支持透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*ro, opt, object, 中心取流信息, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为sURL时有效。中心取流是平台可以自己组装取流的URL*/
"URLMode": {
/*ro, opt, object, 取流URL类型, desc:RTSP#RTSP协议,DAC#DAC组件取流,desc:不填写该字段,默认为RTSP协议取流*/
"@opt": ["DAC", "RTSP"]
/*ro, opt, array, 可选值 , subType:string, range:[,]*/
},
"URL": {
/*ro, req, object, RTSP URL取流*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 1024
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, opt, object, 用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, opt, object, 密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
},
"Camera": {
/*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": {
/*ro, opt, object, 设备接入(任务下发方)平台的协议, desc:[Private#海康私有协议,Onvif#Onvif],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"@opt": ["Private", "Onvif", "ISUP"],
/*ro, req, array, 可选值, subType:string, range:[,]*/
"@def": "Private"
/*ro, req, string, 默认值, range:[,]*/
},
"StreamingViaIP": {
/*ro, opt, object, 通过IP取流, desc:依赖于 proxyProtocol == Private,ONVIF*/
"ipV4Address": {
/*ro, opt, object, IPV4地址*/
"@min": 0,
/*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 32
/*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
},
"port": {
/*ro, req, object, 端口号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 65535
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, req, object, 用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, req, object, 密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"channel": {
/*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
},
"StreamingViaDeviceID": {
/*ro, opt, object, 本地直连取流信息, desc:依赖于 proxyProtocol == ISUP*/
"deviceID": {
/*ro, req, object, 设备ID, desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"@min": 0,
/*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
},
"channel": {
/*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 256
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
}
},
"RecordTime": {
/*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"pollingTime": {
/*ro, req, object, 视频轮询时间范围*/
"@min": 1,
/*ro, req, int, 视频轮询时间最小值, range:[,], step:1, unit:s, unitType:时间*/
"@max": 86400,
/*ro, req, int, 视频轮询时间最大值, range:[,], step:1, unit:s, unitType:时间*/
"@def": 1
/*ro, req, int, 默认值, range:[,], step:1, unit:s, unitType:时间*/
},
"isSupportTimeRange": true,
/*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位,默认单天8个时间段*/
"alarmTargetOverlay": {
/*ro, opt, object, 报警目标框叠加使能*/
"@opt": ["true", "false"]
/*ro, opt, array, 使能选项, subType:string, range:[,]*/
},
"EventTrigger": {
/*ro, opt, object, 任务联动配置能力, desc:不返回该节点表示不支持联动配置*/
"notificationMethod": {
/*ro, opt, object, 联动方式*/
"@opt": ["email", "IM", "IO", "syslog", "HTTP", "FTP", "beep", "ptz", "record", "monitorAlarm", "center", "LightAudioAlarm", "focus", "trace", "cloud", "SMS", "whiteLight"],
/*ro, req, array, 设备支持的联动方式, subType:string, range:[,]*/
"@def": "center"
/*ro, req, string, 默认联动方式, range:[,]*/
}
},
"maxRelChannelNum": 2,
/*ro, opt, int, 单个实时视频任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": {
/*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
"@opt": ["AlarmRMQ", "ServerClient", "ServerHCS", "ActiveMQ"]
/*ro, opt, array, 可选值 , subType:string, range:[,]*/
},
"destinationURL": {
/*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 1024
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"userName": {
/*ro, opt, object, 结果接收方用户名*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
},
"password": {
/*ro, opt, object, 结果接收方密码*/
"@min": 0,
/*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
"@max": 128
/*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
}
}
]
}
POST /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json
{
"taskID": "example",
/*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*req, int, 用于区分不同引擎中运行的模型, range:[,], step:, unit:, unitType:*/
"channel": [1, 2],
/*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"Stream": {
/*opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"TargetAttrs": {},
/*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
"URLMode": "DAC",
/*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
desc:不填写该字段,默认为RTSP协议取流。
DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
"URL": "test",
/*req, string, 取流url, range:[0,1024]*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"pollingTime": 1,
/*req, int, 抓图轮询时间, range:[1,65535], step:, unit:s, unitType:时间*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段,该节点对于历史流无效*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"EventTrigger": [
/*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]*/
"outputIOPortID": "1",
/*opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
"dynOutputIOPortID": "1"
/*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
}
],
"Destination": [
/*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
"destinationURL": "test",
/*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
PUT /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json
{
"channel": [1, 2],
/*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"Stream": {
/*opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"TargetAttrs": {},
/*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
"URLMode": "DAC",
/*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
desc:不填写该字段,默认为RTSP协议取流。
DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
"URL": "test",
/*req, string, 取流url, range:[0,1024]*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"pollingTime": 1,
/*req, int, 抓图轮询时间, range:[1,65535], step:, unit:s, unitType:时间*/
"TimeRange": [
/*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段,该节点对于历史流无效*/
{
"week": 1,
/*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
"beginTime": "00:00",
/*req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*opt, bool, 报警目标框叠加使能*/
"EventTrigger": [
/*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]*/
"outputIOPortID": "1",
/*opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
"dynOutputIOPortID": "1"
/*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
}
],
"Destination": [
/*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
"destinationURL": "test",
/*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
DELETE /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json
无
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json
无
{
"Tasks": [
/*ro, opt, array, 任务信息列表, subType:object, range:[,]*/
{
"taskID": "example",
/*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理,设备透传处理*/
"engine": 1,
/*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
"channel": [1, 2],
/*ro, opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
"Stream": {
/*ro, opt, object, 流信息, desc:任务中分析的码流来源,Stream和channel二选一*/
"streamType": "realTime",
/*ro, req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
"streamSourceType": "URL",
/*ro, req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流(一般采集设备和分析设备在一个局域网内]*/
"StreamSourceList": [
/*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
{
"cameraIndexCode": "UUIDTest",
/*ro, req, string, 监控点编号, range:[0,64],
desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置:
例如(/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>)*/
"AITaskAnalysisType": "AITargetBPTask",
/*ro, opt, enum, AI任务分析类型, subType:string, [AITargetBPTask#AI基准图比对任务], desc:若AITaskAnalysisType=AITargetBPTask, 则cameraIndexCode还表示需要管理对应的基准图集*/
"TargetAttrs": {},
/*ro, opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
"URL": {
/*ro, opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
"URL": "dac://rtsp://10.5.160.103:6304/EUrl/qFD77n9",
/*ro, req, string, 取流url, range:[0,1024],
desc:URL格式依赖能力中(/ISAPI/Intelligent/AIOpenPlatform/videoTask/capabilities?format=json)Stream.StreamSourceList.URL.URLMode.@opt的取值
1.若取值包括DAC:则取流格式可以为:dac://+取流URL+&dactoken=XXX, eg:dac://rtsp://10.5.160.103:6304/EUrl/qFD77n9 ; dac://rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
2.若取值包括RTSP:则取流格式可以为:device://rtsp://xxx, eg:device://rtsp://10.66.108.224:554/Streaming/Channels/101?transportmode=unicast*/
"userName": "admin",
/*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345"
/*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
},
"Camera": {
/*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成,自己组装取流URL功能覆盖了流媒体模块的工作,所以想设备端组装取流URL*/
"protocol": "Private",
/*ro, opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
"StreamingViaIP": {
/*ro, opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
"ipV4Address": "10.21.42.34",
/*ro, opt, string, IPV4地址, range:[0,32]*/
"port": 8080,
/*ro, opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
"userName": "admin",
/*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "abc12345",
/*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
"channel": 1
/*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
},
"StreamingViaDeviceID": {
/*ro, opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
"deviceID": "test",
/*ro, opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
"channel": 1
/*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
}
},
"RecordTime": {
/*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
"startTime": "1970-01-01T00:00:00+08:00",
/*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
"endTime": "1970-01-01T00:00:00+08:00"
/*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
}
}
]
},
"pollingTime": 60,
/*ro, req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
"status": 1,
/*ro, req, int, 状态信息, range:[,], step:, unit:, unitType:*/
"TimeRange": [
/*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防(周为单位),默认单天8个时间段;该节点对于历史流无效*/
{
"week": 1,
/*ro, req, int, 星期, range:[,], step:, unit:, unitType:*/
"beginTime": "00:00",
/*ro, req, string, 开始时间, range:[,]*/
"endTime": "24:00"
/*ro, req, string, 结束时间, range:[,]*/
}
],
"alarmTargetOverlay": true,
/*ro, opt, bool, 报警目标框叠加使能*/
"EventTrigger": [
/*ro, opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置,不下发该节点表示不对已配置的联动做操作,下发空节点表示删除联动方式*/
{
"notificationMethod": "center",
/*ro, req, string, 联动方式, range:[,]*/
"outputIOPortID": "1",
/*ro, opt, string, 联动报警输出端口, range:[,]*/
"videoInputID": "1",
/*ro, opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
"dynOutputIOPortID": "1"
/*ro, opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
}
],
"Destination": [
/*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
{
"destinationType": "AlarmRMQ",
/*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云,ActiveMQ#ActiveMQ], desc:具体取值参考字典*/
"destinationURL": "test",
/*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
"userName": "test",
/*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
"password": "test"
/*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
}
]
}
]
}
GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json
无
{
"AIRuleConfig": {
/*ro, req, object, 规则配置的具体参数*/
"VCA_config": {},
/*ro, opt, object, 规则配置的具体参数, desc:由算法直接提供,协议透传处理*/
"AlertIntervalList": [
/*ro, opt, array, 上报时间间隔列表, subType:object, range:[,]*/
{
"ruleID": 1,
/*ro, opt, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
"value": 1,
/*ro, opt, int, 上报时间间隔, range:[1,1800], step:1, unit:s, unitType:时间*/
"ruleEnable": true
/*ro, opt, bool, 表示当前规则是否使能*/
}
],
"OSDList": [
/*ro, opt, array, OSD字符叠加配置列表, subType:object, range:[,]*/
{
"ruleID": 1,
/*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"enabled": true,
/*ro, req, bool, OSD叠加使能*/
"OSDRegion": {
/*ro, opt, object, OSD叠加框坐标, dep:and,{$.AIRuleConfig.OSDList[*].enabled,eq,true}, desc:屏幕左上角为坐标原点(0.000,0.000)*/
"pointX": 0.100,
/*ro, req, float, 区域左上角顶点的水平坐标, range:[0.000,1.000], step:, unit:, unitType:*/
"pointY": 0.100
/*ro, req, float, 区域左上角顶点的垂直坐标, range:[0.000,1.000], step:, unit:, unitType:*/
},
"TriggerType": 1073758212,
/*ro, req, enum, 进行OSD叠加的规则触发事件类型 , subType:int, [1073758212#跨线目标统计,1073758213#区域目标数统计]*/
"ruleEnable": true
/*ro, req, bool, 表示当前规则是否使能*/
}
],
"OverlayInPreviewList": [
/*ro, opt, array, 规则框与目标框在视频预览中的叠加使能列表, subType:object, range:[,], desc:后端超脑实现,前端不实现*/
{
"ruleID": 1,
/*ro, req, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
"ruleOverlayEnable": true,
/*ro, opt, bool, 规则框叠加使能*/
"targetOverlayEnable": true
/*ro, opt, bool, 目标框叠加使能*/
}
],
"LineCrossingTargetStatisticsMode": [
/*ro, opt, array, 跨线目标统计计数模式, subType:object, range:[,], desc:默认采用固定间隔*/
{
"ruleID": 1,
/*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"mode": "ScheduledCounting",
/*ro, req, enum, 跨线计数模式, subType:string, [ScheduledCounting#定时计数,BatchCounting#批次计数,ManualCounting#手动计数]*/
"BatchCounting": {
/*ro, opt, object, 批次计数参数设置, dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,BatchCounting}*/
"timeInterval": 5
/*ro, req, int, 批次计数时的间隔时间, range:[1,60], step:1, unit:min, unitType:时间*/
},
"ScheduledCounting": [
/*ro, opt, array, 定时计数参数列表, subType:object, range:[,], dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,ScheduledCounting}*/
{
"id": 1,
/*ro, req, int, 定时计数时间段ID, range:[,], step:, unit:, unitType:*/
"startTime": "23:59:59",
/*ro, req, string, 定时开始时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
"endTime": "23:59:59"
/*ro, req, string, 定时结束时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
}
]
}
],
"RuleNameInfo": [
/*ro, opt, array, 规则名称配置信息, subType:object, range:[,]*/
{
"ruleID": 1,
/*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"ruleName": "test"
/*ro, req, string, 规则名称, range:[,]*/
}
]
}
}
PUT /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json
{
"AIRuleConfig": {
/*req, object, 规则配置的具体参数*/
"VCA_config": {},
/*req, object, 规则配置的具体参数, desc:由算法直接提供,协议透传处理*/
"AlertIntervalList": [
/*opt, array, 上报时间间隔列表, subType:object, range:[,]*/
{
"ruleID": 1,
/*opt, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
"value": 1,
/*opt, int, 上报时间间隔, range:[1,1800], step:1, unit:s, unitType:时间*/
"ruleEnable": true
/*opt, bool, 表示当前规则是否使能*/
}
],
"OSDList": [
/*opt, array, OSD字符叠加配置列表, subType:object, range:[,]*/
{
"ruleID": 1,
/*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"enabled": true,
/*req, bool, OSD叠加使能*/
"OSDRegion": {
/*opt, object, OSD叠加框坐标, dep:and,{$.AIRuleConfig.OSDList[*].enabled,eq,true}, desc:屏幕左上角为坐标原点(0.000,0.000)*/
"pointX": 0.100,
/*req, float, 区域左上角顶点的水平坐标, range:[0.000,1.000], step:, unit:, unitType:*/
"pointY": 0.100
/*req, float, 区域左上角顶点的垂直坐标, range:[0.000,1.000], step:, unit:, unitType:*/
},
"TriggerType": 1073758212,
/*req, enum, 进行OSD叠加的规则触发事件类型 , subType:int, [1073758212#跨线目标统计,1073758213#区域目标数统计]*/
"ruleEnable": true
/*req, bool, 表示当前规则是否使能*/
}
],
"OverlayInPreviewList": [
/*opt, array, 规则框与目标框在视频预览中的叠加使能列表, subType:object, range:[,], desc:后端超脑实现,前端不实现*/
{
"ruleID": 1,
/*req, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
"ruleOverlayEnable": true,
/*opt, bool, 规则框叠加使能*/
"targetOverlayEnable": true
/*opt, bool, 目标框叠加使能*/
}
],
"LineCrossingTargetStatisticsMode": [
/*opt, array, 跨线目标统计计数模式, subType:object, range:[,], desc:默认采用固定间隔*/
{
"ruleID": 1,
/*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"mode": "ScheduledCounting",
/*req, enum, 跨线计数模式, subType:string, [ScheduledCounting#定时计数,BatchCounting#批次计数,ManualCounting#手动计数]*/
"BatchCounting": {
/*opt, object, 批次计数参数设置, dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,BatchCounting}*/
"timeInterval": 5
/*req, int, 批次计数时的间隔时间, range:[1,60], step:1, unit:min, unitType:时间*/
},
"ScheduledCounting": [
/*opt, array, 定时计数参数列表, subType:object, range:[,], dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,ScheduledCounting}*/
{
"id": 1,
/*req, int, 定时计数时间段ID, range:[,], step:, unit:, unitType:*/
"startTime": "23:59:59",
/*req, string, 定时开始时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
"endTime": "23:59:59"
/*req, string, 定时结束时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
}
]
}
],
"RuleNameInfo": [
/*opt, array, 规则名称配置信息, subType:object, range:[,]*/
{
"ruleID": 1,
/*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
"ruleName": "test"
/*req, string, 规则名称, range:[,]*/
}
]
}
}
{
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
"statusString": "ok",
/*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "ok",
/*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"errorCode": 1,
/*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
"errorMsg": "ok"
/*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}
GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/status?format=json
无
{
"AIRuleConfigStatus": [
/*ro, req, array, AI规则配置状态信息列表, subType:object, range:[,]*/
{
"channleID": 1,
/*ro, opt, int, 设备通道号, range:[,], step:, unit:, unitType:, desc:channleID和cameraIndexCode二选一,提交任务有两种方式,一种是通道ID,另一种为监控点ID,因此必填修改为可选*/
"cameraIndexCode": "test",
/*ro, opt, string, 监控点ID, range:[1,64]*/
"status": "success"
/*ro, req, enum, 规则配置状态, subType:string, [success#规则配置成功,failed#规则配置失败]*/
}
]
}
POST /ISAPI/Intelligent/AIOpenPlatform/AIIntelligentSearch?format=json
{
"SearchCondition": {
/*opt, object, 搜索条件*/
"searchID": "test",
/*req, string, 搜索记录唯一标识, range:[,], desc:搜索记录唯一标识,在条件不变的情况下,searchID的内容不变(用于标明检索是否为同一次检索,在设备性能受限时,通过多次下发条件(searchID需保持不变)并返回进度来实现异步检索*/
"searchResultPosition": 0,
/*req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
"maxResults": 100,
/*req, int, 本次查询的最大记录数, range:[,], step:, unit:, unitType:*/
"startTime": "2004-05-03T17:30:08+08:00",
/*req, string, 起始时间, range:[,]*/
"endTime": "2004-05-03T17:30:08+08:00",
/*req, string, 结束时间, range:[,]*/
"channelID": [1, 2, 3],
/*opt, array, 支持多个通道号检索, subType:int, range:[,]*/
"engine": [1, 2, 3],
/*opt, array, 支持多个引擎检索, subType:int, range:[,]*/
"taskType": "pictureTask",
/*opt, enum, 任务类型, subType:string, [pictureTask#图片任务,otherTask#其他任务]*/
"taskID": "test",
/*opt, string, 任务ID, range:[,], desc:多个任务ID用逗号隔开*/
"algorithmId": "test"
/*opt, string, 算法ID, range:[,], desc:多个算法ID用逗号隔开*/
}
}
{
"SearchResult": {
/*ro, opt, object, 搜索结果*/
"searchID": "test",
/*ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)*/
"requestURL": "test",
/*ro, opt, string, 请求URL, range:[,]*/
"statusCode": 1,
/*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示(1表示成功且无特殊状态)必须返回*/
"statusString": "test",
/*ro, opt, string, 状态描述, range:[,], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
"subStatusCode": "test",
/*ro, opt, string, 子状态码, range:[,], desc:无法用ok表示(ok表示成功且无特殊状态)时必须返回*/
"errorCode": 1,
/*ro, opt, int, 当statusCode不为1时, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,必填。错误码,与subStatusCode对应*/
"errorMsg": "ok",
/*ro, opt, string, 当statusCode不为1时必填, range:[,], desc:当statusCode不为1时必填,错误详细信息,能具体到某一个参数的错误*/
"responseStatusStrg": "OK",
/*ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO_MATCHES#没有匹配数据]*/
"numOfMatches": 1,
/*ro, req, int, 本次返回匹配条数, range:[,], step:, unit:, unitType:*/
"totalMatches": 1,
/*ro, req, int, 本次搜索总匹配条数, range:[,], step:, unit:, unitType:*/
"AIAlarmInfo": [
/*ro, opt, array, 报警信息列表, subType:object, range:[,]*/
{
"dateTime": "2018-07-06T15:56:47+08:00",
/*ro, req, string, 报警触发时间, range:[,]*/
"channelID": 1,
/*ro, req, int, 设备通道号, range:[,], step:, unit:, unitType:*/
"eventType": "AIOP_Video",
/*ro, req, enum, 事件类型, subType:string, [AIOP_Video#视频任务检测事件,AIOP_Picture#图片任务检测事件,AIOP_Polling_Video#视频轮询任务检测事件,AIOP_Polling_Snap#抓拍轮询任务检测事件]*/
"taskID": "test",
/*ro, opt, string, 任务ID, range:[,]*/
"PID": "test",
/*ro, opt, string, 图片ID, range:[,], desc:来自于图片任务派发,报警类型为图片任务检测事件时该节点有效*/
"AIOPData": "{}",
/*ro, opt, string, 由算法库直接输出;具体的结构体参考算法库提供, range:[,]*/
"url": "test",
/*ro, opt, string, 返回图片对应URL, range:[,]*/
"algorithmInfo": {
/*ro, opt, object, algorithm version information*/
"algorithmId": "test",
/*ro, opt, string, algorithm package ID, range:[,]*/
"algoVendorId": "test",
/*ro, opt, string, manufacturer ID, range:[,]*/
"algoVersionId": "test",
/*ro, opt, string, algorithm version ID, range:[,]*/
"algoChipType": "test",
/*ro, opt, string, chip type, range:[,]*/
"algoModelVersion": "test"
/*ro, opt, string, model version, range:[,]*/
}
}
]
}
}