视频
通过 Videos API 进行角色替换:发送一段视频和一张新角色的图片,得到换成该角色的同一镜头,动作、构图和声音保持不变;以及用标记了角色和场景的提示词制作视频镜头。涵盖请求、轮询、定价、可用地区和限制。
Lovely Router 通过与 OpenAI 形式相同的 Videos API 生成视频:POST /v1/videos 创建任务并返回一个视频对象,轮询直到它变为 completed,然后从 /v1/videos/{id}/content 下载 mp4。不想写代码,可以在 Playground 中试用:上传视频或在 X 上找一段,上传图片或让任意图像模型画一张,再让你选的对话模型优化角色和场景提示词——每一步都像对应的 API 调用一样从余额扣费。
想要边看边持续生成的视频,请看实时视频;想把一首歌做成音乐视频,请看音乐视频。
模型#
| 模型 | 价格 | 作用 |
|---|---|---|
minimax-h3-character-swap | 按生成视频的秒数计费,每秒 $0.10 | 用新角色重拍一段视频:脸、发型、身材和服装来自图片;动作、构图、机位和音轨来自视频。每段最长 10 秒。 |
minimax-h3-aftermidnight | 按生成视频的秒数计费,每秒 $0.12 | 同样的角色替换,加上用于成人场景的 NSFW LoRA(AfterMidnight):更丰富、更私密的场景,身体不受审查。每段最长 10 秒。 |
minimax-h3-video | 按渲染秒数计费,每秒 $0.13,第二张起每张图片每秒加 $0.06 | 用标记了角色和场景的提示词制作视频镜头,带声音和台词;免费把镜头拼接成一个视频。每个镜头 5–15 秒。 |
它们都由 MiniMax H3 驱动,运行在我们自己的 GPU 上,属于 creative-hosted 渠道分组。它们受 MiniMax H3 条款约束:每个请求都要设置 consent: true,表示接受这些条款(包括不在欧盟、英国、韩国或美国使用)并对遵守条款负责。
替换角色#
把源视频作为 video、新角色的图片作为 input_reference 发送,可以是文件(multipart),也可以是 URL(http(s) 或 data:,放在 JSON 里或作为 multipart 文本字段)。
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F input_reference=@character.png \
-F prompt="In front of a weathered concrete wall, soft window light" \
-F consent=true一段 5 秒的视频大约需要一分钟渲染,10 秒的视频大约两到三分钟(画面越大越久)。如果模型有一段时间没人使用,GPU 唤醒还要再加约一分钟。断开连接后任务会继续运行。
请求字段#
请求体参数
modelstring必填minimax-h3-character-swap。
videofile必填源视频:MP4、MOV 或 WebM,最大 80 MB,以文件或 http(s) / data: URL 发送。保留它的动作、构图、机位和音轨;从 start 开始最多使用 10 秒。
input_referencefile新角色的图片:PNG、JPEG 或 WebP,最大 20 MB,以文件或 URL 发送。单人、脸部可见、光线均匀、背景简洁的图片效果最好。
character_idstring用你账户中的一个已保存角色代替 input_reference:它的角色设定图就是这张图片。两者必须且只能发送其一。
consentboolean必填设为 true 表示你接受 MiniMax H3 条款并对遵守条款负责(包括其中的地区条款),并确认视频和图片中出现的每个人都已年满 18 岁,且同意以此方式使用其肖像。
promptstring场景:地点、光线、氛围(最多 4,000 个字符)。视频只沿用动作,因此描述的场景会决定画面风格;不描述时,模型会选用简洁的背景。
secondsnumber最多使用视频的多少秒,3 到 10。默认:整段视频,最长 10 秒。
startnumber从视频的第几秒开始(0–3600;Playground 的裁剪工具会设置它)。默认:0。
backgroundstringnew(默认):只沿用视频的动作,场地由 prompt 描述。keep:保留视频原来的背景、物品和光线,只替换人物,不需要 prompt。价格相同。
seedinteger用相同的种子重现一次渲染(0–2147483647)。默认:随机。
在 POST 上加 ?wait=0–300 会保持请求直到视频完成(返回 200),超时则返回 202 和排队中的视频对象。
使用已保存角色#
新角色可以随每次调用发送,也可以来自你的已保存角色:
- 一次性:
input_reference——图片,以文件或 URL 发送(见上文)。 - 已保存:
character_id——你用POST /v1/characters保存的角色;它的角色设定图就是这张图片。视频对象的character_id会显示它。
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F character_id=chr_3b9e1f0c7a2d4e58b6c1a9f2 \
-F consent=true两者同时发送,或 character_id 不是你的角色,请求会被拒绝(400 / 404)。
整个视频#
POST /v1/videos/replacements 接受整个视频——最长 3 分钟,可以有剪辑和多个人物。先找出它的镜头和其中的每个人(每秒 $0.01);然后把每个人对应到一个角色(或保持原样),并选择替换整个人还是只替换头部(脸、头发和头上戴的东西)。每个有被替换人物的镜头都会重新渲染,再按原来的声音拼接回去;按被替换的秒数计费(SFW 模型在 FastH3 Omni 上渲染,每秒 $0.20;AfterMidnight 每秒 $0.12)。完整流程见视频替换端点。Playground 对所有视频(无论长短)都用它。
视频镜头#
minimax-h3-video 从零开始制作视频:POST /v1/videos/shots 接受一段提示词,其中标记了你的已保存角色和场景(@Mia_Wong、@[Night Café]),每个被标记的都会成为一张参考图片——每个镜头最多 9 张。引号中的文字由它前面最后一个被标记的角色说出。把一个故事的镜头逐个渲染,然后用 POST /v1/videos/joins 拼接(免费)。视频镜头端点页面列出了所有字段、定价,以及 Playground 用来保存分镜的项目 API。有声音的角色会用它说话(每个镜头最多 3 个声音)。渲染前,对白之外的代词会被替换为正确的标签(提示词清理)。
curl https://lovelyrouter.com/v1/videos/shots \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{"model": "minimax-h3-video", "consent": true, "seconds": 5,
"prompt": "In @[Night Café], @Leo looks up as @Mia_Wong sits down: \"You came.\"",
"characters": ["chr_3b9e1f0c7a2d4e58b6c1a9f2", "chr_1e4b7d0a9c3f2e5b8a6d0c1f"],
"scenes": ["scn_5b2d9e0c1a7f4b3e8d6c2a1f"]}'视频对象#
{
"id": "video_4f9d0c2b8e1a47d6a3c5b7e2",
"object": "video",
"model": "minimax-h3-character-swap",
"status": "completed",
"progress": 100,
"created_at": 1792915200,
"completed_at": 1792915288,
"expires_at": 1793520088,
"seconds": "5.17",
"size": "768x1376",
"prompt": "In front of a weathered concrete wall, soft window light",
"character_id": null,
"error": null,
"url": "https://lovelyrouter.com/v1/videos/video_4f9d0c2b8e1a47d6a3c5b7e2/content",
"charge_usd": 0.3875,
"powered_by": "MiniMax H3"
}status 为 queued、in_progress、completed、failed 或 cancelled。失败的视频带有 error: {code, message},不收费。size 跟随源视频的方向,短边为 768 像素;帧率为 24 fps。
端点#
| 请求 | 作用 |
|---|---|
POST /v1/videos | 创建视频。 |
GET /v1/videos/{id} | 视频对象。?wait=1–300 会一直等待,直到状态不再是 queued/in_progress 或超时。 |
GET /v1/videos/{id}/content | mp4 文件(支持 Range 请求,播放器可以拖动进度)。保留 7 天。 |
GET /v1/videos | 你最近的视频,按时间倒序:?limit=1–100,用 ?after=<id> 获取下一页。 |
DELETE /v1/videos/{id} | 取消排队中的视频(不收费),或删除已完成视频的文件。 |
定价#
按生成视频的秒数计费,每段 3 到 10 秒(不足 3 秒的结果按 3 秒计费):一段 5.2 秒的视频收费 $0.52。开始生成时,会从余额中预留它可能产生的最高费用($1.00,或 seconds × 单价),完成后退还差额。失败和取消的视频不收费。
获得更好的效果#
- 视频:单人、清晰可见、以自然的速度移动。快速动作和大面积遮挡更难处理。音轨会保留并用来引导口型,所以说话时口型保持同步。
- 图片:只有这个人,脸部可见,光线均匀,背景简洁。图片的光线和背景不会被复制,但强烈的彩色光可能会渗入。角色设定图(同一个人的正面、四分之三侧面、侧面和背面在一张图里)在镜头绕着人物移动时效果最好,渲染出来仍是一个人。
- 场景:在
prompt中描述地点,让画面接近原视频,例如 “a weathered concrete wall, soft window light”。 - 发型的形状跟随视频(视频里是辫子,结果仍是辫子);发色、脸和服装跟随图片。
错误#
| 状态码 | code / type | 原因 |
|---|---|---|
400 | consent_required | consent 不是 true。 |
400 | invalid_request_error | 缺少文件或文件无法读取、文件过大、seconds 超出范围、同时发送了 input_reference 和 character_id。 |
402 | insufficient_quota | 余额不足以支付预留金额。 |
404 | not_found_error | 模型或视频不存在、该模型不能生成视频,或 character_id 不是你的已保存角色。 |
429 | rate_limit_exceeded | 你的账户已有五个视频在排队或渲染中,或达到了密钥的速率限制。 |
发现滥用可在 /report 举报。