视频生成教程
FoxAPI 支持 wan2.7 和 happyhorse 系列视频生成模型,支持文生视频、图生视频、参考生视频。
必填参数
- 文生视频(t2v):
prompt、resolution、ratio、duration必填 - 图生视频(i2v):以上 +
media(含first_frame)必填 - 参考生视频(r2v):以上 +
media(含reference_image或reference_video)必填
不传 media 会报错 400 must not be blank
接口概览
| 功能 | 接口 | 方法 |
|---|---|---|
| 视频生成 | /v1/videos/generations | POST |
| 任务查询 | /v1/videos/generations/{task_id}?model=模型名 | GET |
可用模型
| 模型 | 功能 | 720P/秒 | 1080P/秒 | 折扣 |
|---|---|---|---|---|
| wan2.7-t2v | 文生视频 | ¥0.39 | ¥0.65 | 6.5折 |
| wan2.7-i2v | 图生视频 | ¥0.39 | ¥0.65 | 6.5折 |
| wan2.7-r2v | 参考生视频 | ¥0.39 | ¥0.65 | 6.5折 |
| happyhorse-1.1-t2v | 文生视频 | ¥0.72 | ¥1.28 | 8折 |
| happyhorse-1.1-i2v | 图生视频 | ¥0.72 | ¥1.28 | 8折 |
| happyhorse-1.1-r2v | 参考生视频 | ¥0.72 | ¥1.28 | 8折 |
| happyhorse-1.0-t2v | 文生视频 | ¥0.72 | ¥1.28 | 8折 |
| happyhorse-1.0-i2v | 图生视频 | ¥0.72 | ¥1.28 | 8折 |
| happyhorse-1.0-r2v | 参考生视频 | ¥0.72 | ¥1.28 | 8折 |
参数说明
通用参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,如 wan2.7-t2v |
prompt | string | 是 | 视频描述文本 |
resolution | string | 是 | 分辨率:720P 或 1080P |
ratio | string | 是 | 宽高比:16:9、9:16、1:1、4:3、3:4 |
duration | integer | 是 | 时长(秒):3-15,默认5 |
negative_prompt | string | 否 | 反向提示词,排除不想要的内容 |
audio_url | string | 否 | 音频文件URL,用于音频驱动视频 |
prompt_extend | boolean | 否 | 是否自动扩展提示词,默认 true |
watermark | boolean | 否 | 是否添加水印,默认 true |
media | array | 见说明 | 媒体列表,i2v/r2v 模型必填 |
media 参数
| 参数 | 类型 | 适用模型 | 说明 |
|---|---|---|---|
type | string | 所有 | 媒体类型(见下表) |
url | string | 所有 | 媒体文件URL |
reference_voice | string | r2v | 参考音色URL(配合 reference_video 使用) |
media.type 可选值:
| type | 适用模型 | 说明 |
|---|---|---|
first_frame | i2v | 首帧图片(图生视频必须) |
last_frame | i2v | 尾帧图片(可选,用于首尾帧生成) |
first_clip | i2v | 输入视频片段(用于视频续写) |
driving_audio | i2v | 驱动音频(用于音频驱动) |
reference_image | r2v | 参考图片(r2v 至少需要一个) |
reference_video | r2v | 参考视频(可选,配合 reference_voice 使用) |
文生视频(t2v)
根据文本描述生成视频,支持多镜头叙事、音频驱动、反向提示词等。
curl 示例
bash
curl -X POST https://foxapi.chat/v1/videos/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的Key" \
-d '{
"model": "wan2.7-t2v",
"prompt": "一只小猫在月光下奔跑,毛发随风飘动,背景是星空和城市夜景",
"resolution": "720P",
"ratio": "16:9",
"duration": 5
}'带反向提示词
json
{
"model": "wan2.7-t2v",
"prompt": "一只可爱的小狗在草地上奔跑",
"negative_prompt": "模糊,低质量,变形,多余肢体",
"resolution": "720P",
"ratio": "16:9",
"duration": 10
}多镜头叙事
json
{
"model": "wan2.7-t2v",
"prompt": "一段紧张刺激的侦探追查故事。第1个镜头[0-3秒] 全景:雨夜的纽约街头,霓虹灯闪烁。第2个镜头[3-6秒] 中景:侦探进入一栋老旧建筑。第3个镜头[6-9秒] 特写:侦探的眼神坚毅专注。",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"prompt_extend": true
}音频驱动
json
{
"model": "wan2.7-t2v",
"prompt": "一只卡通小猫将军,身穿金色盔甲,站在悬崖上",
"audio_url": "https://example.com/audio/bgm.mp3",
"resolution": "720P",
"ratio": "16:9",
"duration": 10
}图生视频(i2v)
基于图片生成视频,必须传 media 参数。
首帧生视频
bash
curl -X POST https://foxapi.chat/v1/videos/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的Key" \
-d '{
"model": "wan2.7-i2v",
"prompt": "一只小猫从静止状态开始奔跑,毛发随风飘动",
"resolution": "720P",
"ratio": "16:9",
"duration": 5,
"media": [{"type": "first_frame", "url": "https://example.com/cat.jpg"}]
}'首尾帧生视频
json
{
"model": "wan2.7-i2v",
"prompt": "写实风格,一只小黑猫好奇地仰望天空,镜头从平视角度逐渐升高",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"media": [
{"type": "first_frame", "url": "https://example.com/cat-start.jpg"},
{"type": "last_frame", "url": "https://example.com/cat-end.jpg"}
],
"prompt_extend": false
}视频续写
json
{
"model": "wan2.7-i2v",
"prompt": "一个女孩对镜自拍,结束后背着书包出门",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"media": [{"type": "first_clip", "url": "https://example.com/selfie.mp4"}],
"prompt_extend": true
}音频驱动
json
{
"model": "wan2.7-i2v",
"prompt": "一个涂鸦艺术角色从墙上活过来,演唱英文rap",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"media": [
{"type": "first_frame", "url": "https://example.com/character.png"},
{"type": "driving_audio", "url": "https://example.com/rap-beat.mp3"}
]
}参考生视频(r2v)
根据参考图片/视频生成视频,必须传 media 参数,至少包含一个 reference_image 或 reference_video。
单图参考
bash
curl -X POST https://foxapi.chat/v1/videos/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的Key" \
-d '{
"model": "wan2.7-r2v",
"prompt": "参考图片中的角色在花园中漫步,3D卡通冒险电影风",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"media": [
{"type": "reference_image", "url": "https://example.com/ref.jpg"}
],
"prompt_extend": false
}'多主体参考
json
{
"model": "wan2.7-r2v",
"prompt": "视频1抱着图3,在图4的椅子上弹奏乡村民谣。图1手中拿着图2,路过视频1",
"resolution": "720P",
"ratio": "16:9",
"duration": 10,
"media": [
{"type": "reference_video", "url": "https://example.com/char1.mp4", "reference_voice": "https://example.com/voice1.mp3"},
{"type": "reference_image", "url": "https://example.com/obj2.jpg"},
{"type": "reference_image", "url": "https://example.com/obj3.jpg"},
{"type": "reference_image", "url": "https://example.com/bg4.jpg"}
],
"prompt_extend": false
}查询任务状态
bash
curl -X GET "https://foxapi.chat/v1/videos/generations/{task_id}?model=wan2.7-t2v" \
-H "Authorization: Bearer sk-你的Key"响应(进行中):
json
{"success": true, "data": {"task_id": "xxx", "status": "running", "output_urls": []}}响应(成功):
json
{"success": true, "data": {"task_id": "xxx", "status": "succeeded", "output_urls": ["https://...mp4"]}}文件上传
图生视频、参考生视频需要先上传图片/视频获取URL。
单文件上传
bash
curl -X POST https://foxapi.chat/v1/uploads \
-H "Authorization: Bearer sk-你的Key" \
-F "file=@/path/to/image.jpg"批量上传(最多5个)
bash
curl -X POST https://foxapi.chat/v1/uploads/batch \
-H "Authorization: Bearer sk-你的Key" \
-F "files=@/path/to/image1.jpg" \
-F "files=@/path/to/image2.png"响应:
json
{"success": true, "data": {"url": "https://...jpg?Expires=...", "mime": "image/jpeg", "size": 102400}}支持格式:图片(png/jpeg/webp/gif)、音频(mpeg/wav/mp3/aac/ogg/flac)、视频(mp4/webm/quicktime)
常见问题
Q: 视频生成需要多长时间?
通常需要1-5分钟,具体取决于视频长度和分辨率。
Q: 如何获取生成的视频?
通过查询任务状态接口获取 output_urls,里面包含视频下载链接。
Q: 支持音频驱动吗?
支持。在请求中添加 audio_url(t2v)或 media 中添加 driving_audio 类型(i2v)即可。
Q: 报错 "must not be blank" 是什么原因?
i2v 和 r2v 模型必须传 media 参数。不传会报 400 must not be blank。请参考上方对应模型的示例。
Q: r2v 和 i2v 有什么区别?
- i2v(图生视频):用一张图作为视频的首帧,生成连续的视频画面
- r2v(参考生视频):用图片/视频作为"参考",生成全新的视频内容,可以保留参考对象的外观特征