Motionshop是一款视频合成模型,可将视频中的人物替换为指定3D角色形象并合成新视频。本文档介绍了该模型提供的视频检测能力的API调用方法。
模型概览
模型名 | 模型简介 | 说明 |
motionshop-synthesis | motionshop-synthesis是一个视频合成模型,可将视频中的人物替换为指定3D角色形象并合成新视频。 | 模型邀测中,请申请通过后调用。 |
HTTP调用接口
功能描述
该模型用于将视频中的人物替换为指定3D角色形象并合成新视频。
前提条件
已开通百炼服务并获得API-KEY:获取API Key。
输入的视频已通过Motionshop 视频检测API检测。
输入限制
视频格式:支持mp4、avi、mov
视频分辨率:不大于1280x720像素
视频帧数:不大于1800帧
文件大小:不大于200MB
上传文件仅支持HTTP链接方式,不支持本地链接方式。
作业提交接口调用
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
因该算法调用耗时较长,故采用异步调用的方式提交任务。
任务提交之后,系统会返回对应的作业ID,后续可通过“作业任务状态查询和结果获取接口”获取任务状态及对应结果。
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
Content-Type | String | Header | 是 | 请求类型:application/json | application/json |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
X-DashScope-Async | String | Header | 是 | 使用 enable,表明使用异步方式提交作业。 | enable |
model | String | Body | 是 | 指明需要调用的视频合成模型,此处用motionshop-synthesis | motionshop-synthesis |
input.video_url | String | Body | 是 | 用户上传的视频url。
说明 上传文件仅支持HTTP链接方式,不支持本地链接方式。 | http://aaa/bbb.mp4 |
input.frame_index | Int | Body | 是 | 视频中待替换人物出现的帧序号 说明 该值可从调用Motionshop 视频检测API的出参信息中获得 | 0 |
input.bbox | Array | Body | 是 | 视频中待替换人物出现的画面位置。 输入值为在第frame_index帧,所检测到人物的boundingbox list。 说明 该值可从调用Motionshop 视频检测API的出参信息中获得 说明 支持替换多人,但当替换人数增加时耗时也会明显增加 | [[0.1,0.1,0.3,0.2], [0.25,0.37,0.1,0.15]] |
input.replacement_id | Array | Body | 是 | 替换到视频中的3D角色。当替换多人时,将按ID列表顺序逐个替换bbox列表中的人物。 说明 该值可从调用Motionshop 3D角色生成API的出参信息中获得 重要 平台预置了一个3D角色"ai",该角色形象仅限用于当前模型的效果测试。 | ["ai", "http://aaa/model1.zip"] |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 提交异步任务的作业 id,实际作业结果需要通过异步任务查询接口获取。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 提交异步任务后的作业状态。 | “PENDING” |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
预置角色示例
预置的角色id | 形象示例 |
ai |
请求示例
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "motionshop-synthesis",
"input": {
"video_url": "http://aaa/bbb.mp4",
"frame_index": 0,
"bbox": [[0.1,0.1,0.3,0.2], [0.25,0.37,0.1,0.15]],
"replacement_id": ["ai","http://aaa/model1.zip"]
}
}'
响应示例
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status": "PENDING"
}
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
作业任务状态查询和结果获取接口
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
入参描述
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a。 | Bearer d1**2a |
task_id | String | Url Path | 是 | 需要查询作业的task_id。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 查询作业的 task_id | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 被查询作业的作业状态 | 任务状态: PENDING 排队中 RUNNING 处理中 SUCCEEDED 成功 FAILED 失败 UNKNOWN 作业不存在或状态未知 |
output | Object | 如果作业成功,包含模型生成的结果 object, object 中包含按照要求生成的结果地址,所有output中地址有效期均为24h | { "synthesis_video_url":"https://xxx/1.mp4", "background_video_url":"https://xxx/2.webm", "foreground_video_url":"https://xxx/3.mov", "animation_url": "https://xxx/4.fbx" } |
output.synthesis_video_url | String | 生成的视频文件 | |
output.background_video_url | String | 生成的抹去人物后的背景视频 | |
output.foreground_video_url | String | 生成的无背景的角色视频(包含alpha通道) | |
output.animation_url | String | 生成的人物骨骼动画文件 | |
output.cache_url | String | 生成的缓存文件url,对于同一个视频,输入缓存文件可以加快处理速度(见input.cache_url) | "cache_url":"https://xxx/xxx_version.zip" |
usage.resource_cost | Float | 本次请求的资源消耗,计算公式如下: resource_cost = video_duration * replacement_count | "resource_cost":4.22 |
usage.video_duration | Float | 本次请求的视频时长计量(保留小数后两位) | "video_duration":2.11 |
usage.video_ratio | String | 固定字段 | "video_ratio":"standard" |
usage.replacement_count | Int | 本次请求替换人物数量 | "replacement_count":2 |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例:
curl -X GET \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
https://poc-dashscope.aliyuncs.com/api/v1/tasks/<YOUR_TASK_ID>
响应示例
{
"output":{
"task_id":"a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status":"SUCCEEDED",
"synthesis_video_url":"https://xxx/1.mp4",
"background_video_url":"https://xxx/2.mp4",
"foreground_video_url":"https://xxx/3.mov",
"animation_url":"https://xxx/4.fbx",
},
"usage":{
"resource_cost":2.11,
"video_duration":2.11,
"video_ratio":standard,
"replacement_count":1,
},
"request_id":"7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
异常响应示例
{
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status": "FAILED",
"code": "xxx",
"message": "xxxxxx",
}
}
状态码说明
大模型服务平台通用状态码请查阅:错误码。
本模型还有如下特定错误码:
http 返回码* | 错误码(code) | 错误信息(message) | 含义说明 |
400 | InvalidParameter | Missing parameter. | 参数缺失 |
400 | InvalidParameter | Parameter xx should be xxx type | 参数类型错误 |
400 | InvalidParameter | Invalid parameter. | 参数值异常 |
400 | InvalidParameter | Invalid video url. | 视频链接异常 |
400 | InvalidParameter | Input video frame count exceeds limit xx | 视频帧数超出限制 |
400 | InvalidParameter | Input video resolution exceeds limit xx | 视频分辨率超出限制 |
400 | InvalidParameter | Video size exceeds the limit xx | 视频文件大小超出限制 |