Motionshop视频合成API详情

Motionshop是一款视频合成模型,可将视频中的人物替换为指定3D角色形象并合成新视频。本文档介绍了该模型提供的视频检测能力的API调用方法。

模型概览

模型名

模型简介

说明

motionshop-synthesis

motionshop-synthesis是一个视频合成模型,可将视频中的人物替换为指定3D角色形象并合成新视频。

模型邀测中,请申请通过后调用。

HTTP调用接口

功能描述

该模型用于将视频中的人物替换为指定3D角色形象并合成新视频。

前提条件

输入限制

  • 视频格式:支持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。

  • 视频格式:支持mp4、avi、mov

  • 视频分辨率≤1280x720

  • 视频帧数≤1800

  • 文件大小≤200MB

说明

上传文件仅支持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

image.png

请求示例

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

视频文件大小超出限制