IPC摄像头视频关键事件提取API
IPC摄像头视频事件抽取与理解服务提供视频内容的智能分析能力。用户提交OSS视频路径,服务自动完成事件片段抽取(关键帧抽取)、视频事件理解、生成Embedding等处理流程。本文介绍该API的请求参数、响应参数和使用示例。
接口说明
该接口为HTTP异步接口,包含两个子接口:
提交关键事件提取任务:提交视频分析任务,返回任务ID。
查询任务结果:通过任务ID查询处理结果。
接口一:提交关键事件提取任务
请求定义
URL:POST /api/v1/operators/video-event-extraction/tasks/submit
Content-Type:application/json
请求参数
必填参数
参数 | 类型 | 必填 | 说明 |
video_uri | string | 是 | OSS视频路径,格式如 |
可选参数 - 鉴权配置
参数 | 类型 | 必填 | 说明 |
role_arn | string | 否 | RAM角色ARN,用于访问video_uri对应的OSS资源,需提前创建并授权。示例值: |
可选参数 - 模型配置
参数 | 类型 | 必填 | 说明 |
prompt | string | 否 | 视频理解Prompt,不传则使用默认Prompt。 |
embedding_dim | int | 否 | Embedding维度,默认1024。 |
可选参数 - 视频处理配置
参数 | 类型 | 必填 | 默认值 | 说明 |
sample_fps | float | 否 | 1.0 | 采样帧率,以1/sample_fps秒为间隔进行抽帧,用于场景变化检测。 |
merge_gap | float | 否 | 3.0 | 事件合并间隔(秒),两个事件片段间隔小于此值则合并。 |
min_duration | float | 否 | 2.55 | 事件最小长度(秒),短于此值的片段将被丢弃。 |
max_frames_per_segment | int | 否 | 30 | 每个事件片段的最大关键帧数,同时也是发送给VL模型的最大帧数。 |
frame_short_side | int | 否 | 480 | 关键帧短边缩放目标值(像素)。 |
frame_store_mode | string | 否 | none | 关键帧存储模式。取值:
|
frame_store_path | string | 否 | 无 | 关键帧保存的OSS目录路径,格式如 |
请求示例
基础请求(使用默认配置)
curl -X POST "http://amv-xxxxxx.ads.aliyuncs.com:8000/api/v1/operators/video-event-extraction/tasks/submit" \
-H "Content-Type: application/json" \
-d '{
"video_uri": "oss://my-bucket/videos/sample.mp4"
}'自定义模型配置
curl -X POST "http://amv-xxxxxx.ads.aliyuncs.com:8000/api/v1/operators/video-event-extraction/tasks/submit" \
-H "Content-Type: application/json" \
-d '{
"video_uri": "oss://my-bucket/videos/sample.mp4",
"prompt": "请分析视频中的事件,识别人物行为和场景变化",
"embedding_dim": 1024
}'自定义视频处理参数
curl -X POST "http://amv-xxxxxx.ads.aliyuncs.com:8000/api/v1/operators/video-event-extraction/tasks/submit" \
-H "Content-Type: application/json" \
-d '{
"video_uri": "oss://my-bucket/videos/sample.mp4",
"prompt": "请分析视频中的事件,识别人物行为和场景变化",
"sample_fps": 1.0,
"merge_gap": 5.0,
"min_duration": 3.0,
"max_frames_per_segment": 25,
"frame_short_side": 480,
"frame_store_mode": "user",
"frame_store_path": "oss://bucket/prefix"
}'响应参数
参数 | 类型 | 说明 |
status | string | 任务提交状态。取值: |
task_id | string | 任务ID,用于后续查询任务结果。 |
message | string | 错误信息,仅在提交失败时返回。 |
响应示例
提交成功
{
"status": "SUCCESS",
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"message": null
}提交失败
{
"status": "FAILED",
"task_id": null,
"message": "Task submission failed, please contact technical support."
}接口二:查询任务结果
请求定义
URL:GET /api/v1/operators/video-event-extraction/tasks/results/{task_id}
请求示例
curl -X GET "http://amv-xxxxxx.ads.aliyuncs.com:8000/api/v1/operators/video-event-extraction/tasks/results/xxxxxxxx"响应参数
参数 | 类型 | 说明 |
task_status | string | 任务状态。取值: |
video_uri | string | 处理的视频OSS路径。 |
message | string | 错误信息,仅在任务失败时返回。 |
data | array | 事件抽取结果数组,仅在任务成功时返回。 |
data[].index | int | 事件片段序号,从1开始递增。 |
data[].content | string | 事件理解内容描述。 |
data[].embedding | array[float] | 事件内容的向量表示。 |
data[].start_time | float | 事件起始时间(毫秒)。 |
data[].end_time | float | 事件终止时间(毫秒)。 |
data[].usage | array[object] | 模型Token用量信息,包含model_name、input_tokens、output_tokens。 |
data[].frame_path | string | 关键帧ZIP包的OSS路径,仅当frame_store_mode为 |
data[].frame_vpc_url | string | 关键帧ZIP包的临时签名链接,仅当frame_store_mode为 |
响应示例
任务处理中
{
"task_status": "PROCESSING",
"video_uri": "oss://my-bucket/videos/sample.mp4",
"message": null,
"data": null
}任务成功
{
"task_status": "SUCCESS",
"message": null,
"video_uri": "oss://my-bucket/videos/sample.mp4",
"data": [
{
"index": 1,
"start_time": 2000.0,
"end_time": 9130.0,
"content": "视频中第一个人进入室内,身穿蓝色外套,推门而入",
"embedding": [0.0123, -0.0456, 0.0789, "..."],
"usage": [
{
"model_name": "qwen3.5-flash",
"input_tokens": 2521,
"output_tokens": 84
},
{
"model_name": "text-embedding-v4",
"input_tokens": 90,
"output_tokens": 0
}
],
"frame_path": "oss://xxx/xxx/20260408/a960fed4/event_001.zip",
"frame_vpc_url": null
},
{
"index": 2,
"start_time": 9850.0,
"end_time": 15380.0,
"content": "人物在客厅走动,查看周围环境",
"embedding": [0.0234, -0.0567, 0.0890, "..."],
"usage": [
{
"model_name": "qwen3.5-flash",
"input_tokens": 2556,
"output_tokens": 112
},
{
"model_name": "text-embedding-v4",
"input_tokens": 134,
"output_tokens": 0
}
],
"frame_path": "oss://xxx/xxx/20260408/a960fed4/event_002.zip",
"frame_vpc_url": null
}
]
}任务失败
{
"task_status": "FAILED",
"video_uri": "oss://my-bucket/videos/sample.mp4",
"message": "The video file does not exist or cannot be accessed.",
"data": null
}