本文主要介绍视频摘要服务的开通、资源创建、调用接口、算法配置步骤以及相关的使用场景。
开通服务
在使用此能力前需联系产品经理为您的腾讯云账号及物联网开发平台的目标产品开通“AI视频分析能力”白名单。开通时需提交以下信息:
腾讯云账号 ID。您可登录腾讯云官网,单击右上角的头像查看并复制所需账号 ID。
说明:
若您是子账号类型,也需将主账号 ID 一并提交给产品经理来开启白名单。
物联网开发平台的目标产品 ID(产品需为视频服务类)。您可登录 控制台,进入对应实例,在产品开发页复制获取产品 ID。如尚未创建产品,可参考下文“创建资源”来新建视频类产品。

创建资源
1. 以在公共实例下创建产品为例,进入 物联网开发平台控制台,单击公共实例后,选择产品开发 > 自有产品,然后单击新建产品。

2. 可以按下图红色线框选项选择产品品类,输入产品名,通信类型选择“WiFi”即可。

3. 单击新建产品保存成功。

4. 在物联网开发平台为产品开启 AI 视频分析高级功能。
注意:
此操作需要先提供腾讯云账号 ID 和产品 ID 给到产品经理开通服务。
如果遇到打开服务失败,请排查当前产品下是否存在设备,需保证此产品下无设备,才能成功开启服务。

单击刚创建成功的产品,进入物模型定义 > 高级功能,开启“AI视频分析能力”。

调用接口体验摘要功能
同步请求
1. 进入云 API 控制台,请求云 API InvokeCloudStorageAIServiceTask 执行视频语义理解。
2. Region、ProductId、DeviceName、ServiceType、StartTime、EndTime、VideoURLs.N 为必填项,其他为选填。

参数名称 | 参数类型 | 参数说明 | 取值说明 |
ProductId | string | 产品 ID。 | 传入实际信息。 |
DeviceName | string | 设备名称。 | 传入实际信息。 |
ServiceType | string | 视频 AI 分析服务类型。可以填 RealtimeObjectDetect(目标检测)、Highlight(视频浓缩)和 VideoToText(视频语义理解)。 | 固定传 "VideoToText"。 |
StartTime | int64 | 待分析云存的起始时间(秒级 UNIX 时间戳,不早于当前时间 30 天前)。 | |
EndTime | int64 | 待分析云存的结束时间(秒级 UNIX 时间戳,不晚于当前时间 1 小时后)。 | |
VideoURLs | string[] | 分析外部传入的图片 / 视频 URL 列表。 视频:支持 HLS 点播(m3u8)及常见视频格式(mp4 等)。 图片:支持常见图片格式(jpg、png 等)。如传入图片,需要在 Config 中配置 "IsImage": true。 | 当前仅支持 1 条 URL,传入多条仅分析第一条。 |
Config | string | 算法配置参数(JSON 字符串)。 | 可选参数,取值示例: "{\\"MultiCameraLayout\\":\\"Single\\"}" |
3. (20秒以内任务返回结果)返回 Completed = true,同时返回任务结果,任务结束。
4. (20秒超时未完成)返回 Completed = false,表示在超时时间内任务未执行完成(积压/未完成的任务会继续排队执行),需要以异步方式获取任务执行结果。
方式一:通过云 API 异步查询任务结果。
方式二:通过 HTTP 回调接收任务结果推送。
如果出现“云存 AI 分析任务创建额度不足”的提示,说明账号 ID 未加入白名单,请联系产品经理开通服务。

请求示例:分析视频 - 成功
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: InvokeCloudStorageAIServiceTask
{
"ProductId": "AABBCCDDEE",
"DeviceName": "dev123"
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"EndTime": 1714240802,
"VideoURLs": ["https://example.com/video.mp4"],
"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"
}
响应:
{
"Response": {
"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6",
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"Completed": true,
"TaskInfo": {
"ChannelId": 0,
"CreateTime": 1714240812,
"DeviceName": "dev123",
"EndTime": 1714240802,
"Files": [],
"ProductId": "AABBCCDDEE",
"Result": "{\\"DetectedClassifications\\": [\\"person\\"], \\"Summary\\": \\"白衣人走在湿漉漉的路面上\\"}",
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"Status": 3,
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"UpdateTime": 1714240814
}
}
}
请求示例:分析视频 - 超时未完成
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: InvokeCloudStorageAIServiceTask
{
"ProductId": "AABBCCDDEE",
"DeviceName": "dev123"
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"EndTime": 1714240802,
"VideoURLs": ["https://example.com/video.mp4"],
"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"
}
响应:
{
"Response": {
"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6",
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"Completed": false,
"TaskInfo": {
"ChannelId": 0,
"CreateTime": 1714240812,
"DeviceName": "dev123",
"EndTime": 1714240802,
"Files": [],
"ProductId": "AABBCCDDEE",
"Result": "",
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"Status": 4,
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"UpdateTime": 1714240812
}
}
}
请求示例:分析视频 - 视频下载/读取失败
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: InvokeCloudStorageAIServiceTask
{
"ProductId": "AABBCCDDEE",
"DeviceName": "dev123"
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"EndTime": 1714240802,
"VideoURLs": ["https://example.com/video.mp4"],
"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"
}
响应:
{
"Response": {
"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6",
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"Completed": true,
"TaskInfo": {
"ChannelId": 0,
"CreateTime": 1714240812,
"DeviceName": "dev123",
"EndTime": 1714240802,
"Files": [],
"ProductId": "AABBCCDDEE",
"Result": "",
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"Status": 2,
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"UpdateTime": 1714240813
}
}
}
请求示例:分析图片 - 成功
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: InvokeCloudStorageAIServiceTask
{
"ProductId": "AABBCCDDEE",
"DeviceName": "dev123"
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"EndTime": 1714240802,
"VideoURLs": ["https://example.com/image.jpg"],
"Config": "{\\"IsImage\\":true}"
}
响应:
{
"Response": {
"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6",
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"Completed": true,
"TaskInfo": {
"ChannelId": 0,
"CreateTime": 1714240812,
"DeviceName": "dev123",
"EndTime": 1714240802,
"Files": [],
"ProductId": "AABBCCDDEE",
"Result": "{\\"DetectedClassifications\\": [\\"person\\"], \\"Summary\\": \\"白衣人走在湿漉漉的路面上\\"}",
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"Status": 3,
"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8",
"UpdateTime": 1714240813
}
}
}
例程:使用 Python SDK 请求云 API
pip install tencentcloud-sdk-python
# -*- coding: utf-8 -*-
from tencentcloud.common.common_client import CommonClient
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
try:
cred = credential.Credential(
"", # SecretId
"", # SecreyKey
)
httpProfile = HttpProfile()
httpProfile.endpoint = "iotexplorer.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
params = {
"ProductId": "AABBCCDDEE",
"DeviceName": "dev123",
"ServiceType": "VideoToText",
"StartTime": 1714240800,
"EndTime": 1714240802,
"VideoURLs": [
"https://example.com/video.mp4",
],
"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"
}
common_client = CommonClient("iotexplorer", "2019-04-23", cred, "ap-guangzhou", profile=clientProfile)
resp = common_client.call_json("InvokeCloudStorageAIServiceTask", params)
print(resp)
except TencentCloudSDKException as err:
print(err)
异步请求
1. 请求云 API CreateCloudStorageAIServiceTask 创建视频语义理解任务。
参数名称 | 参数类型 | 参数说明 | 取值说明 |
ProductId | string | 产品 ID。 | 传入实际信息。 |
DeviceName | string | 设备名称。 | 传入实际信息。 |
ServiceType | string | 视频 AI 分析服务类型。可以填 RealtimeObjectDetect(目标检测)、Highlight(视频浓缩)和 VideoToText(视频语义理解)。 | 固定传 "VideoToText"。 |
StartTime | int64 | 待分析云存的起始时间(秒级 UNIX 时间戳,不早于当前时间 30 天前)。 | |
EndTime | int64 | 待分析云存的结束时间(秒级 UNIX 时间戳,不晚于当前时间 1 小时后)。 | |
VideoURLs | string[] | 分析外部传入的图片 / 视频 URL 列表。 视频:支持 HLS 点播(m3u8)及常见视频格式(mp4 等)。 图片:支持常见图片格式(jpg、png 等)。如传入图片,需要在 Config 中配置 "IsImage": true。 | 当前仅支持 1 条 URL,传入多条仅分析第一条。 |
Config | string | 算法配置参数(JSON 字符串)。 | 可选参数,取值示例: "{\\"MultiCameraLayout\\":\\"Single\\"}" |
2. 获取视频语义理解任务结果。
方式一:通过云 API 异步查询任务结果。
方式二:通过 HTTP 回调接收任务结果推送。
请求示例:分析视频
POST / HTTP/1.1Host: iotexplorer.tencentcloudapi.comContent-Type: application/jsonX-TC-Action: CreateCloudStorageAIServiceTask{"ProductId": "AABBCCDDEE","DeviceName": "dev123""ServiceType": "VideoToText","StartTime": 1714240800,"EndTime": 1714240802,"VideoURLs": ["https://example.com/video.mp4"]}
响应:
{"Response": {"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6","TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8"}}
请求示例:分析视频(带算法参数)
POST / HTTP/1.1Host: iotexplorer.tencentcloudapi.comContent-Type: application/jsonX-TC-Action: CreateCloudStorageAIServiceTask{"ProductId": "AABBCCDDEE","DeviceName": "dev123""ServiceType": "VideoToxText","StartTime": 1714240800,"EndTime": 1714240802,"VideoURLs": ["https://example.com/video.mp4"],"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"}
响应:
{"Response": {"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6","TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8"}}
请求示例:分析图片
POST / HTTP/1.1Host: iotexplorer.tencentcloudapi.comContent-Type: application/jsonX-TC-Action: CreateCloudStorageAIServiceTask{"ProductId": "AABBCCDDEE","DeviceName": "dev123""ServiceType": "VideoToText","StartTime": 1714240800,"EndTime": 1714240802,"VideoURLs": ["https://example.com/image.jpg"],"Config": "{\\"IsImage\\":true}"}
响应:
{"Response": {"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6","TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8"}}
例程:使用 Python SDK 请求云 API
pip install tencentcloud-sdk-python
# -*- coding: utf-8 -*-from tencentcloud.common.common_client import CommonClientfrom tencentcloud.common import credentialfrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfiletry:cred = credential.Credential("", # SecretId"", # SecreyKey)httpProfile = HttpProfile()httpProfile.endpoint = "iotexplorer.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileparams = {"ProductId": "AABBCCDDEE","DeviceName": "dev123","ServiceType": "VideoToText","StartTime": 1714240800,"EndTime": 1714240802,"VideoURLs": ["https://example.com/video.mp4",],"Config": "{\\"MultiCameraLayout\\":\\"Single\\"}"}common_client = CommonClient("iotexplorer", "2019-04-23", cred, "ap-guangzhou", profile=clientProfile)resp = common_client.call_json("CreateCloudStorageAIServiceTask", params)print(resp)except TencentCloudSDKException as err:print(err)
算法配置参数(Config)字段说明
参数名称 | 参数类型 | 参数说明 | 取值说明 |
MultiCameraLayout | string | (可选)多摄像头画面识别。若传入视频为多摄像头平铺的视频画面,可传入该参数以得到更准确的视频语义理解结果。 | |
EnableFireDetect | boolean | (可选)开启火焰识别与描述。 | true:开启 false:不开启(默认值) |
EnableSmokeDetect | boolean | (可选)开启烟雾识别与描述。 注意:若对较为模糊或带有马赛克的视频开启烟雾识别,可能有误识别的情况。 | true:开启 false:不开启(默认值) |
IsImage | boolean | (可选)是否为图片输入。 | true:图片输入 false:视频输入(默认值) |
IsNightVision | boolean | (可选)是否为夜视画面。 | true:夜视画面 false:非夜视画面(默认值) |
MultiCameraLayout 说明
多摄像头格式:Vertical,Num=画面数量,Index=画面序号
如果同时分析多路画面,画面序号可填写多个,用英文分号(;)分隔。
可选取值:
布局 | MultiCameraLayout 取值 | 说明 |
单摄像头 | Single | 将视频视为单个完整画面(默认值)。 |
双摄像头(等分辨率、垂直方向平铺) | Vertical,Num=2,Index=0 | 指定分析从上往下的第一个画面。 |
Vertical,Num=2,Index=1 | 指定分析从上往下的第二个画面。 | |
Vertical,Num=2,Index=0;1 | 分析全部两个画面。 | |
Vertical | 分析全部两个画面(兼容以前的取值)。 | |
三摄像头(等分辨率、垂直方向平铺) | Vertical,Num=3,Index=0 | 指定分析从上往下的第一个画面。 |
Vertical,Num=3,Index=1 | 指定分析从上往下的第二个画面。 | |
Vertical,Num=3,Index=2 | 指定分析从上往下的第三个画面。 | |
Vertical,Num=3,Index=0;1 | 指定分析从上往下的第一个+第二个画面。 | |
Vertical,Num=3,Index=0;2 | 指定分析从上往下的第一个+第三个画面。 | |
Vertical,Num=3,Index=1;2 | 指定分析从上往下的第二个+第三个画面。 | |
Vertical,Num=3,Index=0;1;2 | 分析全部三个画面。 |
通过云 API 查询视频 AI 分析任务结果
根据 TaskId 查询指定的视频 AI 分析任务
前提条件
已通过云 API 或 HTTP 回调方式获取视频 AI 分析任务的任务 ID(TaskId)。
操作步骤
请求示例:
POST / HTTP/1.1Host: iotexplorer.tencentcloudapi.comContent-Type: application/jsonX-TC-Action: DescribeCloudStorageAIServiceTask{"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8"}
响应示例:
{"Response": {"RequestId": "8b490930-d119-4ee2-963c-c58973a1ebe6","TaskInfo": {"ChannelId": 0,"CreateTime": 1714240802,"DeviceName": "dev123","EndTime": 1714240802,"Files": [],"ProductId": "TSLFHRWDSD","Result": "{\\"Summary\\":\\"摘要文本\\",\\"DetectedClassifications\\":[\\"car\\"]}","ServiceType": "VideoToText","StartTime": 1714240800,"Status": 3,"TaskId": "c31aa4f2-08c9-4088-9603-186d7311fdd8","UpdateTime": 1714240802}}}
通过 HTTP 回调接收视频 AI 分析结果
平台支持通过 HTTP 回调视频 AI 分析结果。需要部署一个符合回调接口定义的 HTTP 服务,并使其可以从公网访问,以实现视频 AI 分析结果的接收。
回调接口定义
(建议参考下文提供的 HTTP 服务例程)
GET / 连通性检查:取出 HTTP 请求头部 Echostr 的值,将其作为 HTTP 响应的内容,并返回 200 OK 状态码。
POST / 分析结果回调:从该接口接收平台推送的视频 AI 分析结果。视频 AI 分析结果为 JSON 格式,位于 HTTP 请求体中。在成功接收该请求后,应返回 200 OK 状态码。
配置 HTTP 回调地址
前提条件
1. 产品已开通 AI 视频分析服务。
2. 已部署外网可访问的 HTTP 回调服务。
注意:
在控制台或通过云 API 配置 HTTP 回调 URL 时,平台会向指定的 URL 发起连通性检查请求,若连通性检查失败,则 HTTP 回调配置不会保存生效,同时返回错误码 InvalidParameterValue.InvalidCallbackUrl。
操作步骤
1. 登录 物联网开发平台 控制台。
2. 依次选择实例、产品,进入产品详情页面。
3. 选择高级功能标签页,单击 Al 视频分析能力操作列的消息接收设置。

4. 填写 HTTP 回调地址(以及鉴权 Token,如果需要)。

5. 单击保存来保存配置。
可能配置失败的原因
指定的回调 URL 格式有误。
指定的回调 URL 无法通过外网访问。
指定的回调 URL 中端口号不为 80 或 443。
平台向指定的回调 URL 发起连通性检查时,其未返回 HTTP 200 OK 状态码。
平台向指定的回调 URL 发起连通性检查时,其未将请求头部中的 Echostr 作为响应内容。
回调请求鉴权
鉴权方式与 消息队列 HTTP 转发的鉴权方式相同。可以配置鉴权 Token 以验证请求来自物联网智能视频服务(消费版)平台。若配置了鉴权 Token,则平台发起的请求(包括连通性检查请求和分析结果回调请求)会附加以下 HTTP 请求头部。其中,Nonce 和 Timestamp 用于防止重放攻击,Signature 可用于确认请求来自平台。
请求头部 | 含义 | 示例值 |
Nonce | 随机字符串 | pWttcBmqRpOfdlph |
Timestamp | 秒级 UNIX 时间戳 | 1714285922 |
Signature | 签名值 | 5d5a0ac2dd41f5b5e553f95e0f657247281aea0b |
根据配置的鉴权 Token 以及 HTTP 请求头部中的 Nonce 和 Timestamp 值,使用相同的算法计算签名,若签名值匹配则可认为请求来自平台。签名值 Signature 的计算步骤如下:
1. 对 Nonce、Timestamp 和鉴权 Token 三个字符串按字典序排序,然后依次拼接得到一个字符串(在上述示例中,假设鉴权 Token 为 example,则拼接后的字符串为 1714285922examplepWttcBmqRpOfdlph)。
2. 计算拼接后字符串的 SHA1 散列值。
3. 将散列值的小写十六进制表示作为 Signature 的值。
示例:连通性检查
请求
在控制台或通过云 API 配置 HTTP 回调 URL 时,平台向该 URL 发起连通性检查请求。
GET / HTTP/1.1User-Agent: IotVideo/1.0Echostr: 3A4dsItMWYmL7pkL
响应
当 HTTP 服务接收到连通性检查请求时,应当返回状态码为 200 OK 的响应,且响应内容为 HTTP 请求头部 Echostr 的值。
200 OKContent-Type: text/plainContent-Length: 163A4dsItMWYmL7pkL
示例:连通性检查(包含鉴权信息)
请求
本示例假设鉴权 Token 为 example。
GET / HTTP/1.1User-Agent: IotVideo/1.0Echostr: 3A4dsItMWYmL7pkLNonce: pWttcBmqRpOfdlphSignature: 5d5a0ac2dd41f5b5e553f95e0f657247281aea0bTimestamp: 1714285922
响应
200 OKContent-Type: text/plainContent-Length: 163A4dsItMWYmL7pkL
分析结果数据结构
字段名 | 字段说明 | 示例值 |
MsgType | 固定值,表示视频 AI 分析结果。 | "ai_analytics_result" |
ProductId | 产品 ID。 | "AABBCCDDEE" |
DeviceName | 设备名称。 | "dev123" |
ServiceType | 视频AI分析服务类型,取值 VideoToText:视频语义理解。 | "VideoToText" |
Status | 视频 AI 分析任务状态。 可能取值: 1:失败。 2:成功但结果为空。 3:成功且结果非空。 | 3 |
Result | 分析结果详情(JSON 字符串)。 | {"Summary":"摘要文本", "DetectedClassifications": ["car"]} |
Files | 视频 AI 分析输出的文件列表。 | [] |
Time | 分析结果回调时间。 | "2024-04-10 18:12:05" |
StartTime | 对应云存片段的起始时间(秒级 UNIX 时间戳)。 | 1714240800 |
EndTime | 对应云存片段的结束时间(秒级 UNIX 时间戳)。 | 1714240802 |
示例:视频语义理解结果回调
请求
当视频 AI 分析任务完成时,平台会携带分析结果请求指定的 HTTP 回调 URL。分析结果为 JSON 格式,位于 HTTP 请求体中。
POST / HTTP/1.1User-Agent: IotVideo/1.0Content-Type: application/json{"MsgType": "ai_analytics_result","ProductId": "AABBCCDDEE","DeviceName": "dev123","ServiceType": "VideoToText","TaskId": "95990598-aba1-465e-9993-3f90c071e5d9","Status": 3,"Result": "{\\"Summary\\":\\"摘要文本\\",\\"DetectedClassifications\\":[\\"car\\"]}","Files": [],"Time": "2024-04-10 18:12:05","StartTime": 1714240800,"EndTime": 1714240802}
例程:接收回调 HTTP 服务例程源码(Python)
from flask import Flask, request, make_responseimport hashlibimport tracebackLISTEN_HOST = "0.0.0.0"LISTEN_PORT = 80AUTH_TOKEN = "example" # 鉴权 token,若为空则表示不需要鉴权app = Flask(__name__)# 根据鉴权 Token 验证请求的有效性def is_signature_valid(nonce, timestamp, signature):if nonce is None or timestamp is None or signature is None:return Falseplain_text = "".join(sorted([nonce, timestamp, AUTH_TOKEN]))sha1_hash = hashlib.sha1(plain_text.encode("utf-8")).hexdigest()expected_signature = sha1_hash.lower()return expected_signature == signature.lower()# 连通性检查def handle_connectivity_check(request):if AUTH_TOKEN and not is_signature_valid(nonce=request.headers.get("Nonce"),timestamp=request.headers.get("Timestamp"),signature=request.headers.get("Signature"),):return "Forbidden", 403echostr = request.headers.get("Echostr")if echostr:return make_response(echostr, 200, {"Content-Type": "text/plain"})else:return "Bad Request", 400# 分析结果回调def handle_analytic_result(request):if AUTH_TOKEN and not is_signature_valid(nonce=request.headers.get("Nonce"),timestamp=request.headers.get("Timestamp"),signature=request.headers.get("Signature"),):return "Forbidden", 403post_data = request.get_data(as_text=True)# TODO:处理分析结果return "OK", 200, {"Content-Type": "text/plain"}@app.route("/", methods=["GET", "POST"])def handle_request():try:# 打印请求print("[Request]", request.method, request.path)for key, value in request.headers:print(f"{key}: {value}")print()if request.method == "POST":print(request.get_data(as_text=True))print()# 处理请求if request.method == "GET":return handle_connectivity_check(request)elif request.method == "POST":return handle_analytic_result(request)else:return "Method Not Allowed", 405except Exception as e:print("[Exception]")traceback.print_exc()return "Internal Server Error", 500if __name__ == "__main__":app.run(port=LISTEN_PORT, host=LISTEN_HOST)
语义理解输出结果
语义理解结果为 状态值 + 明细结果 形式。
状态值
状态值在视频 AI 分析任务的 Status 字段中。可以通过云 API 查询,或通过 HTTP 回调接收。可能取值:
1:失败
3:成功且结果非空
明细结果
明细结果在视频 AI 分析任务的 Result 字段中。可以通过云 API 查询,或通过 HTTP 回调接收。Result 为一个 JSON 对象字符串,Result 对象的数据结构如下:
字段 | 类型 | 描述 |
Summary | string | 自然语言形式的视频总结文本。 |
DetectedClassifications | string[] | 从视频中识别到的目标类型列表。 列表中目标类型的可能取值: person:人 vehicle:车辆 dog:狗 cat:猫 fire:火焰 smoke:烟雾 package:快递包裹 license_plate:车牌 |
示例值:
{"Summary": "视频摘要文本", "DetectedClassifications": ["person", "vehicle"]}