AI搜索开放平台支持通过API的方式调用视频截帧服务,可从视频中提取关键帧画面,并结合文字识别(OCR)、图像解析或多模态向量服务,实现对视频内容的深度解析与结构化处理。
服务列表
服务名称 | 服务ID | 服务描述 | API调用QPS限制(含主账号与RAM子账号) |
视频截帧服务001 | ops-video-snapshot-001 | 视频截帧服务001(ops-video-snapshot-001) 提供视频内容提取能力,可从视频中捕获关键帧画面。结合多模态向量服务或图片解析能力,实现跨模态检索。 | 5 说明 如需扩充QPS,请通过工单联系技术支持协助。 |
获取身份鉴权信息
通过API调用AI搜索开放平台服务时,需要对调用者身份进行鉴权,如何获取鉴权信息请参见获取API-KEY。
获取服务调用地址
支持通过公网和VPC两种方式调用服务,详情请参见获取服务接入地址。
创建异步任务
请求方式:POST
URL
{host}/v3/openapi/workspaces/{workspace_name}/video-snapshot/{service_id}/async
host:调用服务的地址,支持通过公网和VPC两种方式调用API服务,可参见获取服务接入地址。
workspace_name:工作空间名称,例如default。
service_id: 系统内置服务ID,例如ops-video-snapshot-001。
请求参数
Header参数
API-KEY认证
参数 | 类型 | 必填 | 描述 | 示例值 |
Content-Type | String | 是 | 请求类型:application/json | application/json |
Authorization | String | 是 | API-Key | Bearer OS-d1**2a |
Body参数
参数 | 类型 | 必填 | 描述 |
input | Object(input) | 是 | 指定待处理的多媒体文件。 |
parameters | Object | 否 | 指定服务的参数。 |
output | Object(output) | 是 | 控制输出的格式及文件存放路径。 |
input
参数 | 类型 | 必填 | 描述 |
content | String | 否 | 视频内容的base64编码数据,支持mp4、avi、mkv、mov、flv、webm。 说明 input.content 和 input.oss 参数互斥,只能二选一。
|
oss | String | 否 | 输入文件的OSS路径,例如 oss://<BUCKET_NAME>/xxx/xxx.mp4。 |
file_name | String | 否 | 视频文件的名称,如果没有设置,则从内容的文件名中解析。 |
Parameters
参数 | 类型 | 必填 | 描述 |
interval | Int | 否 | 切帧间隔(秒),默认1秒。 |
format | String | 否 | 切帧输出的格式,支持jpg和png,默认jpg。 |
output
参数 | 类型 | 必填 | 描述 |
type | String | 否 | base64:以base64的格式将图片内容返回,仅同步调用下支持。 oss:截帧文件放在OSS中(默认)。 |
oss | String | 否 | 输出文件的OSS路径,在type为oss的情况下必须填写。 示例: |
返回参数
参数 | 类型 | 描述 | 示例值 |
result.task_id | String | 视频提取任务的唯一标识ID。 | snapshot-xxxx-abc-123 |
Curl请求示例
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <您的API-KEY>" \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/video-snapshot/ops-video-snapshot-001/async"
--data '{
"input":{
"oss" : "oss://<BUCKET_NAME>/test.mp4"
},
"parameters" : {
},
"output": {
"type":"oss",
"oss" :"oss://<BUCKET_NAME>/result/path"
}
}' \
响应示例
{
"request_id":"de81e152284a2d3b1f4315d*******",
"latency":21,
"usage":{},
"result":{
"task_id":"snapshot-20250617102142-110841*******-*******",
"status":"PENDING"
}
}
获取异步任务的状态
请求方式:GET
URL
{host}/v3/openapi/workspaces/{workspace_name}/video-snapshot/{service_id}/async/task-status?task_id={task_id}
host:调用服务的地址,支持通过公网和VPC两种方式调用API服务,可参见获取服务接入地址。
workspace_name:工作空间名称,例如default。
service_id: 系统内置服务ID,例如ops-video-snapshot-001。
请求参数
参数名 | 类型 | 必填 | 描述 | 示例 |
service_id | String | 是 | 服务ID。 | ops-video-snapshot-001 |
task_id | String | 是 | 创建异步视频截帧任务响应中的任务标识。 | snapshot-xxxx-abc-123 |
返回参数
参数 | 类型 | 描述 | 示例值 |
result.task_id | String | 视频提取任务的唯一标识ID。 | snapshot-xxxx-abc-123 |
result.status | String | 任务状态:
| PENDING |
result.error | String | status=FAIL时的错误信息内容,正常情况为空。 | |
result.data | List(SnapshotResult) | 视频处理的结果 。 | |
usage.image_count | Int | 截帧输出的图数。 |
SnapshotResult
参数 | 类型 | 描述 |
frame_index | Int | 视频中的第几帧。 |
path | String | 文件的OSS路径, 用户指定输出为OSS的时候,截帧的结果在OSS的存放路径,URL编码后的内容。 |
content | String | 图片的base64编码后的内容。和path两者只会有一个存在,并且仅在执行同步任务的时候才会返回。 |
frame_time | Float | 当前截帧在视频中的时间戳,单位是s。 |
Curl请求示例
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <您的API-KEY>" \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/video-snapshot/ops-video-snapshot-001/async/task-status?task_id=snapshot-20250617102142-1108418170738252-******" \
响应示例
{
"request_id":"83b423e2e63613a878c369c20******",
"latency":11,
"usage":{
"image":64
},
"result":{
"task_id":"snapshot-20250617102142-1108418170738252-******",
"status":"SUCCESS",
"data":[
{
"frame_index": 0,
"path": "oss://bucket-name/result/path/snapshot-xxxx-abc-123-xxx/snapshot_0.jpg",
"frame_time": 0.0
},
......
{
"frame_index": 1890,
"path": "oss://bucket-name/result/path/snapshot-xxxx-abc-123-xxx/snapshot_63.jpg",
"frame_time": 63.0
}
]
}
}
创建视频截帧同步任务
URL
{host}/v3/openapi/workspaces/{workspace_name}/video-snapshot/{service_id}/sync
host:调用服务的地址,支持通过公网和VPC两种方式调用API服务,可参见获取服务接入地址。
workspace_name:工作空间名称,例如default。
service_id: 系统内置服务ID,例如ops-video-snapshot-001。
请求参数
Header参数
API-KEY认证
参数 | 类型 | 必填 | 描述 | 示例值 |
Content-Type | String | 是 | 请求类型:application/json | application/json |
Authorization | String | 是 | API-Key | Bearer OS-d1**2a |
Body参数
参数 | 类型 | 必填 | 描述 |
input | Object(input) | 是 | 指定待处理的多媒体文件。 |
parameters | Object | 否 | 指定服务的参数。 |
output | Object(output) | 是 | 控制输出的格式及文件存放路径。 |
input
参数 | 类型 | 必填 | 描述 |
content | String | 否 | 视频内容的base64编码数据,支持mp4、avi、mkv、mov、flv、webm。 说明 input.content 和 input.oss 参数互斥,只能二选一。
|
oss | String | 否 | 输入文件的OSS路径,例如 oss://<BUCKET_NAME>/xxx/xxx.mp4。 |
file_name | String | 否 | 视频文件的名称,如果没有设置,则从内容的文件名中解析。 |
Parameters
参数 | 类型 | 必填 | 描述 |
interval | Int | 否 | 切帧间隔(秒),默认1秒。 |
format | String | 否 | 切帧输出的格式,支持jpg和png,默认jpg。 |
output
参数 | 类型 | 必填 | 描述 |
type | String | 否 | base64:以base64的格式将图片内容返回,仅同步调用下支持。 oss:截帧文件放在OSS中(默认)。 |
oss | String | 否 | 输出文件的OSS路径,在type为oss的情况下必须填写。 示例: |
返回参数
参数 | 类型 | 描述 | 示例值 |
result.task_id | String | 视频提取任务的唯一标识ID。 | snapshot-xxxx-abc-123 |
Curl请求示例
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <您的API-KEY>" \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/video-snapshot/ops-video-snapshot-001/sync"
--data '{
"input":{
"oss" : "oss://<BUCKET_NAME>/test.mp4"
},
"parameters" : {
},
"output": {
"type":"oss",
"oss" :"oss://<BUCKET_NAME>/result/path"
}
}' \
响应示例
{
"request_id":"83b423e2e63613a878c369c20******",
"latency":11,
"usage":{
"image":64
},
"result":{
"task_id":"snapshot-20250617102142-1108418170738252-b******",
"status":"SUCCESS",
"data":[
{
"frame_index": 0,
"path": "oss://bucket-name/result/path/snapshot-xxxx-abc-123-xxx/snapshot_0.jpg",
"frame_time": 0.0
},
......
{
"frame_index": 1890,
"path": "oss://bucket-name/result/path/snapshot-xxxx-abc-123-xxx/snapshot_63.jpg",
"frame_time": 63.0
}
]
}
}
状态码说明
在访问请求出错的情况下,输出结果中会通过code和message指明出错原因。
{
"request_id": "6F33AFB6-A35C-4DA7-AFD2-9EA16CCF****",
"latency": 2.0,
"code": "InvalidParameter",
"http_code": 400,
"message": "JSON parse error: Cannot deserialize value of type `ImageStorage` from String \\"xxx\\"
}
HTTP 状态码 | 错误码 | 描述 |
200 | - | 请求成功,包括任务失败场景,实际任务状态需从result.status中判断。 |
404 | BadRequest.TaskNotExist | 任务不存在。 |
400 | InvalidParameter | 不合法请求。 |
500 | InternalServerError | 内部错误。 |
更多状态码说明,请参见状态码说明。