1. 获取设备支持AI开放平台的功能能力

1.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json

1.2 输入参数

1.3 输出参数

{
    "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*/
}

2. 获取设备在AI开放平台上支持的计算能力

2.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform?format=json

2.2 输入参数

2.3 输出参数

{
    "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:计算引擎支持多模型加载的时候,返回该字段,用于集成用户判断设备总共能支持多少路通道分析(当前只有物联网主机产品实现)。*/
}

3. 预设设备算法模型

3.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/algorithmModel?format=json

3.2 输入参数

{
    "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中实现*/
}

3.3 输出参数

{
    "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时,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

4. 获取设备预设模型包的下载进度

4.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/progress/<MPID>?format=json

4.2 输入参数

4.3 输出参数

{
    "percent":  100 
    /*ro, req, int, 设备算法下载模型进度, range:[0,100], step:, unit:, unitType:, desc:0-表示尚未开始,100-表示下载完成,在进度为100的时候,需要重启设备生效*/
}

5. 芯片重启

5.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>/reset?format=json

5.2 输入参数

5.3 输出参数

{
    "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时,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

6. 获取所有引擎的状态信息

6.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engines?format=json

6.2 输入参数

6.3 输出参数

{
    "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:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的图片通道(当前只有物联网主机产品实现)。*/
        }
    ]
}

7. 获取指定引擎的状态信息

7.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>?format=json

7.2 输入参数

7.3 输出参数

{
    "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:计算引擎支持多模型加载的时候,返回该字段。集成用户根据该字段判断,该引擎是否可以关联新的图片通道(当前只有物联网主机产品实现)。*/
    }
}

8. 模型包绑定引擎

8.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/loading/<engineID>?format=json

8.2 输入参数

{
    "MPID":  "example", 
    /*req, string, 模型ID, range:[0,64], desc:由业务平台管理,设备透传记录,用于区分模型包信息*/
    "MPName":  "example"    
    /*opt, string, 模型包名称, range:[0,128]*/
}

8.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

9. 模型包解绑引擎

9.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/unloading/<engineID>?format=json

9.2 输入参数

9.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

10. 设备模型包存储空间查询

10.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space?format=json

10.2 输入参数

10.3 输出参数

{
    "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:*/
}

11. 设备模型包删除

11.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space/<MPID>?format=json

11.2 输入参数

11.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

12. 设备模型包查询

12.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json

12.2 输入参数

12.3 输出参数

{
    "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如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
        }
    ]
}

13. 更新指定模型包的参数信息

13.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/update?format=json

13.2 输入参数

{
    "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如何展示界面,比如支持人脸库和版本信息展示,算法引擎不需要这个字段里的值。*/
}

13.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

14. 获取视频任务信息能力

14.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoTask/capabilities?format=json

14.2 输入参数

14.3 输出参数

{
    "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:*/
            }
        }
    ]
}

15. 下发视频任务

15.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json

15.2 输入参数

{
    "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:敏感信息需要加密*/
        }
    ]
}

15.3 输出参数

{
    "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:多通道任务时,部分通道因为分辨率的问题,可能任务下发失败,所以此处返回失败的通道号,成功时,不返回*/
}

16. 修改视频任务

16.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json

16.2 输入参数

{
    "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:敏感信息需要加密*/
        }
    ]
}

16.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

17. 删除视频任务

17.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json

17.2 输入参数

17.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

18. 查询视频任务

18.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json

18.2 输入参数

18.3 输出参数

{
    "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:敏感信息需要加密*/
                }
            ]
        }
    ]
}

19. 获取图片任务信息能力

19.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask/capabilities?format=json

19.2 输入参数

19.3 输出参数

{
    "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:*/
            }
        }
    ]
}

20. 下发图片任务

20.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json

20.2 输入参数

{
    "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:敏感信息需要加密*/
        }
    ]
}

20.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

21. 删除图片任务

21.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/pictureTask/<taskID>?format=json

21.2 输入参数

21.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

22. 查询图片任务信息

22.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json

22.2 输入参数

22.3 输出参数

{
    "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, 配置模块信息*/
                        }
                    }
                }
            ]
        }
    ]
}

23. 获取视频轮询任务参数能力

23.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/capabilities?format=json

23.2 输入参数

23.3 输出参数

{
    "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:*/
}

24. 创建视频轮询任务

24.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json

24.2 输入参数

{
    "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(序号)、规则名称*/
}

24.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

25. 配置视频轮询任务

25.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json

25.2 输入参数

{
    "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(序号)、规则名称*/
}

25.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

26. 删除视频轮询任务

26.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json

26.2 输入参数

26.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

27. 查询视频轮询任务信息

27.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json

27.2 输入参数

27.3 输出参数

{
    "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(序号)、规则名称*/
        }
    ]
}

28. 获取抓图轮询任务信息能力

28.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/capabilities?format=json

28.2 输入参数

28.3 输出参数

{
    "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:*/
            }
        }
    ]
}

29. 创建抓图轮询任务

29.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json

29.2 输入参数

{
    "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:敏感信息需要加密*/
        }
    ]
}

29.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

30. 配置抓图轮询任务

30.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json

30.2 输入参数

{
    "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:敏感信息需要加密*/
        }
    ]
}

30.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

31. 删除抓图轮询任务

31.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json

31.2 输入参数

31.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

32. 获取抓图轮询任务信息

32.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json

32.2 输入参数

32.3 输出参数

{
    "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:敏感信息需要加密*/
                }
            ]
        }
    ]
}

33. 获取AI规则

33.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json

33.2 输入参数

33.3 输出参数

{
    "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:[,]*/
            }
        ]
    }
}

34. 配置AI规则

34.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json

34.2 输入参数

{
    "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:[,]*/
            }
        ]
    }
}

34.3 输出参数

{
    "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时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

35. 获取AI规则配置状态信息

35.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/status?format=json

35.2 输入参数

35.3 输出参数

{
    "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#规则配置失败]*/
        }
    ]
}

36. AI智能检索

36.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/AIIntelligentSearch?format=json

36.2 输入参数

{
    "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用逗号隔开*/
    }
}

36.3 输出参数

{
    "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:[,]*/
                }
            }
        ]
    }
}