前言
实现起来很快很简单,本人已经封装成脚本文件,可时间git本人代码使用,快捷又方便
https://github.com/knoka812/Wan2.1-FastAPI.git
唯一需要注意的是,硬件设施一定要达到要求,测试A100 40G下文本生成480P的5s视频仅3分钟,A800 80G下图片生成480P的5s视频仅13分钟
部署流程
1、克隆存储库
git clone https://github.com/knoka812/Wan2.1-FastAPI.git
2、安装依赖项
cd Wan2.1
pip install -r requirements.txt
pip install modelscope
3、下载模型
注意这里使用的模型是,通义万相2.1-图生视频-14B-480P-Diffusers版本(推荐单卡A100 40G)和通义万相2.1-文生视频-1.3B-Diffusers版本(推荐单卡A800 80G)
modelscope download --model Wan-AI/Wan2.1-T2V-1.3B-Diffusers --local_dir ./Wan2.1-T2V-1.3B-Diffusers
# modelscope download --model Wan-AI/Wan2.1-I2V-14B-480P-Diffusers --local_dir ./Wan2.1-I2V-14B-480P-Diffusers
4、修改代码
主要两个部分需要修改,分别是密钥、生成视频共享地址,根据自己需求指定
# 初始化认证密钥
app.state.valid_api_keys = {
"你的密钥"
}
# 初始化视频生成模型
model_id = "./Wan2.1-T2V-1.3B-Diffusers"
app.state.base_url = "ip地址+8088"
5、启动脚本
python t2v-api.py
# python i2v-api.py
附录-FastAPI文档介绍
文本生成视频API介绍
一、功能概述
本服务基于Wan2.1-T2V-1.3B模型实现文本到视频生成,包含以下核心功能:
- 异步任务队列:支持多任务排队和并发控制(最大2个并行任务)
- 资源管理:显存优化(使用bfloat16精度)、生成视频自动清理(默认1小时后删除)
- 安全认证:基于API Key的Bearer Token验证
- 任务控制:支持任务提交/状态查询/取消操作
技术栈:FastAPI框架、CUDA加速、异步任务处理、Diffusers推理库
二、接口说明
1、提交生成任务
POST /video/submit
{
"model": "Wan2.1-T2V-1.3B",
"prompt": "A beautiful sunset over the mountains",
"image_size": "480x832",
"num_frames": 81,
"guidance_scale": 5.0,
"infer_steps": 50
}
响应示例:
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
2、查询任务状态
POST /video/status
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
响应示例:
{
"status": "Succeed",
"results": {
"videos": [{"url": "http://localhost:8088/videos/abcd1234.mp4"}],
"timings": {"inference": 120}
}
}
3、取消任务
POST /video/cancel
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
响应示例:
{
"status": "Succeed"
}
三、Postman使用指南
1、基础配置
- 服务器地址:
http://ip地址:8088
- 认证方式:Bearer Token
- Token值:需替换为有效API Key
2. 提交任务
- 选择POST方法,输入URL:
/video/submit
- Headers添加:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
- Body选择raw/JSON格式,输入请求参数
3. 查询状态
- 新建请求,URL填写
/video/status
- 使用相同认证头
- Body中携带requestId
4. 取消任务
- 新建DELETE请求,URL填写
/video/cancel
- Body携带需要取消的requestId
注意事项
- 所有接口必须携带有效API Key
- 视频生成耗时约2-5分钟(根据参数配置)
- 生成视频默认保留1小时
四、参数规范
参数名 | 允许值范围 | 必填 | 说明 |
---|---|---|---|
prompt | 10-500字符 | 是 | 视频内容描述 |
image_size | "480x832" 或 "832x480" | 是 | 分辨率 |
num_frames | 24-120 | 是 | 视频总帧数 |
guidance_scale | 1.0-20.0 | 是 | 文本引导强度 |
infer_steps | 20-100 | 是 | 推理步数 |
seed | 0-2147483647 | 否 | 随机种子 |
五、状态码说明
状态码 | 含义 |
---|---|
202 | 任务已接受 |
401 | 认证失败 |
404 | 任务不存在 |
422 | 参数校验失败 |
500 | 服务端错误(显存不足等) |
提示:建议使用Swagger文档进行接口测试,访问http://服务器地址:8088/docs
可查看自动生成的API文档界面
图像生成视频API介绍
一、功能概述
基于Wan2.1-I2V-14B-480P模型实现图像到视频生成,核心功能包括:
- 异步任务队列:支持多任务排队和并发控制(最大2个并行任务)
- 智能分辨率适配:支持自动计算最佳分辨率(保持原图比例)、支持手动指定分辨率(480x832/832x480)
- 资源管理:显存优化(bfloat16精度)、生成文件自动清理(默认1小时)
- 安全认证:基于API Key的Bearer Token验证
- 任务控制:支持任务提交/状态查询/取消操作
技术栈:FastAPI框架、CUDA加速、异步任务处理、Diffusers推理库
二、接口说明
1. 提交生成任务
POST /video/submit
{
"model": "Wan2.1-I2V-14B-480P",
"prompt": "A dancing cat in the style of Van Gogh",
"image_url": "https://example.com/input.jpg",
"image_size": "auto",
"num_frames": 81,
"guidance_scale": 3.0,
"infer_steps": 30
}
响应示例:
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
2. 查询任务状态
POST /video/status
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
响应示例:
{
"status": "Succeed",
"results": {
"videos": [{"url": "http://localhost:8088/videos/abcd1234.mp4"}],
"timings": {"inference": 90},
"seed": 123456
}
}
3. 取消任务
POST /video/cancel
{
"requestId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
响应示例:
{
"status": "Succeed"
}
三、Postman使用指南
1. 基础配置
- 服务器地址:
http://ip地址:8088
- 认证方式:Bearer Token
- Token值:需替换为有效API Key
2. 提交任务
- 选择POST方法,URL填写
/video/submit
- Headers添加:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
- Body示例(图像生成视频):
{
"prompt": "Sunset scene with mountains",
"image_url": "https://example.com/mountain.jpg",
"image_size": "auto",
"num_frames": 50
}
3. 特殊处理
- 图像下载失败:返回400错误,包含具体原因(如URL无效/超时)
- 显存不足:返回500错误并提示降低分辨率
四、参数规范
参数名 | 允许值范围 | 必填 | 说明 |
---|---|---|---|
image_url | 有效HTTP/HTTPS URL | 是 | 输入图像地址 |
prompt | 10-500字符 | 是 | 视频内容描述 |
image_size | "480x832", "832x480", "auto" | 是 | auto模式自动适配原图比例 |
num_frames | 24-120 | 是 | 视频总帧数 |
guidance_scale | 1.0-20.0 | 是 | 文本引导强度 |
infer_steps | 20-100 | 是 | 推理步数 |
seed | 0-2147483647 | 否 | 随机种子 |
五、状态码说明
状态码 | 含义 |
---|---|
202 | 任务已接受 |
400 | 图像下载失败/参数错误 |
401 | 认证失败 |
404 | 任务不存在 |
422 | 参数校验失败 |
500 | 服务端错误(显存不足/模型异常等) |
六、特殊功能说明
- 智能分辨率适配:当
image_size="auto"
时,自动计算符合模型要求的最优分辨率,保持原始图像宽高比,最大像素面积不超过399,360(约640x624) - 图像预处理:自动转换为RGB模式,根据目标分辨率进行等比缩放
重要提示:输入图像URL需保证公开可访问,私有资源需提供有效鉴权
提示 :访问http://服务器地址:8088/docs
可查看交互式API文档,支持在线测试所有接口