教你部署Wan2.1图/文生成视频FastAPI服务

前言

实现起来很快很简单,本人已经封装成脚本文件,可时间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模型实现文本到视频生成,包含以下核心功能:

  1. 异步任务队列:支持多任务排队和并发控制(最大2个并行任务)
  2. 资源管理:显存优化(使用bfloat16精度)、生成视频自动清理(默认1小时后删除)
  3. 安全认证:基于API Key的Bearer Token验证
  4. 任务控制:支持任务提交/状态查询/取消操作

技术栈: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. 提交任务

  1. 选择POST方法,输入URL:/video/submit
  2. Headers添加:

   Authorization: Bearer YOUR_API_KEY
   Content-Type: application/json

  1. Body选择raw/JSON格式,输入请求参数

3. 查询状态

  1. 新建请求,URL填写/video/status
  2. 使用相同认证头
  3. Body中携带requestId

4. 取消任务

  1. 新建DELETE请求,URL填写/video/cancel
  2. Body携带需要取消的requestId

注意事项

  1. 所有接口必须携带有效API Key
  2. 视频生成耗时约2-5分钟(根据参数配置)
  3. 生成视频默认保留1小时


四、参数规范

参数名允许值范围必填说明
prompt10-500字符视频内容描述
image_size"480x832" 或 "832x480"分辨率
num_frames24-120视频总帧数
guidance_scale1.0-20.0文本引导强度
infer_steps20-100推理步数
seed0-2147483647随机种子


五、状态码说明

状态码含义
202任务已接受
401认证失败
404任务不存在
422参数校验失败
500服务端错误(显存不足等)

提示:建议使用Swagger文档进行接口测试,访问http://服务器地址:8088/docs可查看自动生成的API文档界面

图像生成视频API介绍

一、功能概述

基于Wan2.1-I2V-14B-480P模型实现图像到视频生成,核心功能包括:

  1. 异步任务队列:支持多任务排队和并发控制(最大2个并行任务)
  2. 智能分辨率适配:支持自动计算最佳分辨率(保持原图比例)、支持手动指定分辨率(480x832/832x480)
  3. 资源管理:显存优化(bfloat16精度)、生成文件自动清理(默认1小时)
  4. 安全认证:基于API Key的Bearer Token验证
  5. 任务控制:支持任务提交/状态查询/取消操作

技术栈: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. 提交任务

  1. 选择POST方法,URL填写/video/submit
  2. Headers添加:

   Authorization: Bearer YOUR_API_KEY
   Content-Type: application/json

  1. 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输入图像地址
prompt10-500字符视频内容描述
image_size"480x832", "832x480", "auto"auto模式自动适配原图比例
num_frames24-120视频总帧数
guidance_scale1.0-20.0文本引导强度
infer_steps20-100推理步数
seed0-2147483647随机种子


五、状态码说明

状态码含义
202任务已接受
400图像下载失败/参数错误
401认证失败
404任务不存在
422参数校验失败
500服务端错误(显存不足/模型异常等)


六、特殊功能说明

  1. 智能分辨率适配:当image_size="auto"时,自动计算符合模型要求的最优分辨率,保持原始图像宽高比,最大像素面积不超过399,360(约640x624)
  2. 图像预处理:自动转换为RGB模式,根据目标分辨率进行等比缩放

重要提示:输入图像URL需保证公开可访问,私有资源需提供有效鉴权

提示 :访问http://服务器地址:8088/docs可查看交互式API文档,支持在线测试所有接口

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knoka705

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值