视频 AI 分析

最近更新时间:2024-05-27 16:25:51

我的收藏

1、前置条件:设备接入事件云存

物联网智能视频服务(消费版)平台提供的视频 AI 分析能力要求设备上传云存事件录像,接入流程如下:
通过云 API 为设备开通事件云存套餐。详见 开通云存套餐
设备端启用云存储模块,上报云存事件并将音视频数据推送到云端。详见设备接入手册中的 云存储模块

2、设备开通视频 AI 分析能力

2.1 申请视频AI分析增值服务能力

打开控制台,进入产品开发页面-选择需开通功能的产品-进入产品开发物模型定义页面-切换至产品高级功能,申请开通产品的视频 AI 分析高级功能。




2.2 设备云存AI分析能力开通

您可以调用云 API 修改设备云存 AI 分析服务 为指定设备开启视频 AI 分析能力。在已开启视频 AI 分析能力的设备上报云存事件后,平台将为设备上传的视频创建视频 AI 分析任务,并返回分析结果。
物联网智能视频服务(消费版)平台当前支持以下视频 AI 分析能力:
视频 AI 分析能力
ServiceType 取值
包裹检测
PackageDetect
在为设备开通视频 AI 分析能力时,您需要传入相应的 ServiceType 参数。若您期望为一台设备开通多种视频 AI 分析能力,您需要对每种能力分别调用 修改设备云存 AI 分析服务 云 API,并传入相应的 ServiceType 参数。
包裹检测输入源及识别结果示例:




3、获取视频 AI 分析结果

您可以通过云 API 查询视频 AI 分析结果,或通过 HTTP 接口接收视频 AI 分析结果回调

3.1 通过云 API 查询分析结果

您可以调用云 API 查询设备云存AI分析任务列表 查询指定设备的视频 AI 分析结果。

字段含义

TaskId: TaskId 字段值为视频 AI 分析任务的唯一标识符。
Status: Status 字段表示视频 AI 分析任务的运行状态,以及粗略的结果信息。
字段值
含义
1
分析失败
2
分析成功,但未识别到任何目标
3
分析成功,且识别到至少一个目标
4
分析任务正在执行中
Result: Result 字段为视频 AI 分析结果的明细信息。对不同的视频 AI 分析能力,其输出格式可能有所不同。
视频 AI 分析能力
Result 格式
示例输出
包裹检测
可能取值:
plastic-bags
file-bags
paper-bags
当识别到多种不同类型的包裹时,使用空格作为分隔符拼接为一个字符串。
plastic-bags file-bags

3.2 通过 HTTP 接口接收分析结果回调

您可以在控制台为指定产品设置视频 AI 分析的 HTTP 回调配置。在完成 HTTP 回调配置后,平台会将该产品下设备的视频 AI 分析结果转发到指定的 HTTP 回调 URL。



您需要部署一个符合回调接口定义的 HTTP 服务,并使其可以从公网访问,以完成 HTTP 回调配置并接收视频 AI 分析结果回调。回调接口定义如下:
GET / 连通性检查:您需要取出 HTTP 请求头部 Echostr 的值,将其作为 HTTP 响应的内容,并返回 200 OK 状态码。
POST / 分析结果回调:您可以从该接口接收平台推送的视频 AI 分析结果。视频 AI 分析结果为 JSON 格式,位于 HTTP 请求体中。在成功接收该请求后,应返回 200 OK 状态码。
注意:
在控制台配置 HTTP 回调 URL 时,平台会向指定的 URL 发起连通性检查请求,若连通性检查失败,则 HTTP 回调配置不会保存生效。
示例:连通性检查-请求
当您在控制台配置 HTTP 回调 URL 时,平台向该 URL 发起连通性检查请求。
GET / HTTP/1.1
User-Agent: IotVideo/1.0
Echostr: 3A4dsItMWYmL7pkL
示例:连通性检查-响应
当您部署的 HTTP 服务接收到连通性检查请求时,应当返回状态码为 200 OK 的响应,且响应内容为 HTTP 请求头部 Echostr 的值。
200 OK
Content-Type: text/plain
Content-Length: 16

3A4dsItMWYmL7pkL
示例:分析结果回调-请求
当视频 AI 分析任务完成时,平台会携带分析结果请求指定的 HTTP 回调 URL。分析结果为 JSON 格式,位于 HTTP 请求体中。
POST / HTTP/1.1
User-Agent: IotVideo/1.0
Content-Type: application/json

{
"MsgType": "ai_analytics_result",
"ProductId": "MVTYMD8YCD",
"DeviceName": "dev001",
"ServiceType": "PackageDetect",
"TaskId": "95990598-aba1-465e-9993-3f90c071e5d9",
"Status": 3,
"Result": "paper-bags file-bags plastic-bags",
"Time": "2024-04-10 18:12:05"
}
示例:分析结果回调-响应
当您部署的 HTTP 服务接收到分析结果回调请求时,应当返回状态码为 200 OK 的响应表示成功接收。若请求失败、超时未收到响应,或返回的 HTTP 状态码不为 200,平台会延迟 5 秒后重试请求,最多重试 2 次。
200 OK
Content-Length: 0
另外地,您可以配置鉴权 Token 以验证请求来自物联网智能视频服务(消费版)平台。当您配置了鉴权 Token 时,平台发起的请求会附加以下 HTTP 请求头部。其中,NonceTimestamp 用于防止重放攻击,Signature 可用于确认请求来自平台。
请求头部
含义
示例值
Nonce
随机字符串
vLeD3GvsUx5O1kLP
Timestamp
秒级 UNIX 时间戳
1712744577
Signature
签名值
2194e42c5e15e34ef9463de4c3f27619edf748d7
您可以根据配置的鉴权 Token 以及 HTTP 请求头部中的 NonceTimestamp 值,使用相同的算法计算签名,若签名值匹配则可认为请求来自平台。签名值 Signature 的计算方式为:
1. 对 Nonce、Timestamp 和鉴权 Token 三个字符串按字典序排序,然后依次拼接得到一个字符串(在上述示例中,假设鉴权 Token 为 example,则拼接后的字符串为 1712744577examplevLeD3GvsUx5O1kLP
2. 计算拼接后字符串的 SHA1 散列值
3. 将散列值的小写十六进制表示作为 Signature 的值
示例:连通性检查(包含鉴权信息)-请求
本示例假设鉴权 Token 为 example
GET / HTTP/1.1
User-Agent: IotVideo/1.0
Echostr: 3A4dsItMWYmL7pkL
Nonce: vLeD3GvsUx5O1kLP
Signature: 2194e42c5e15e34ef9463de4c3f27619edf748d7
Timestamp: 1712744577