视频超分 API
视频超分把已有视频提升到更高分辨率并补帧,由 Mozia 自建集群提供。 与其他视频模型不同,它的输入是一段视频而不是提示词:画幅、内容、时长都由源视频决定,你只需要选择输出档位。
复用统一的异步视频接口:提交任务,轮询状态,下载结果。
接口
| 方法 | 路径 | 作用 |
|---|---|---|
POST | /v1/video/generations | 提交超分任务 |
GET | /v1/video/generations/{task_id} | 查询任务状态与结果 |
GET | /v1/video/generations/{task_id}/content | 下载结果视频 |
基础地址:https://mzsjai.com,所有请求都需要 Authorization: Bearer <YOUR_API_KEY>。
模型档位
| 模型 ID | 输出长边 | 说明 |
|---|---|---|
mozia/video-upscale-1920 | 1920 px | 1080P 档 |
mozia/video-upscale-2560 | 2560 px | 2K 档,单价更高 |
档位由模型 ID 决定,没有额外的分辨率参数。输出画幅跟随源视频,长边缩放到对应档位。 输出帧率为 24 fps。
单价见模型价格。
快速开始
curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/video/generations' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "mozia/video-upscale-1920",
"prompt": "upscale",
"video_url": "https://example.com/source.mp4",
"duration": 8
}'
提交成功后保存返回的 task_id,随后的查询与下载流程与其他视频模型一致,
详见视频生成。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 上表中的档位模型 ID |
video_url | string | 是 | 源视频地址,必须是公网可访问的 HTTP(S) URL |
duration | number | 是 | 源视频时长(秒),正数,用于计费 |
prompt | string | 是 | 占位字段,超分不使用其内容,填 "upscale" 即可 |
:::note prompt 为什么是必填
/v1/video/generations 对所有视频模型统一校验 prompt 非空,缺失会返回
400 prompt is required。超分没有提示词语义,服务端会忽略该字段的内容,
传任意非空字符串均可。
:::
超分没有 ratio、resolution、generate_audio 等参数。画幅与内容由源视频决定,
输出档位由模型 ID 决定。
源视频要求
必须是公网可访问的 HTTP(S) URL。 超分服务会主动去 GET 这个地址下载源视频, 因此不支持 Data URL、原始 Base64、本地路径和内网地址。 本地文件请先上传到对象存储或使用平台的素材上传能力,取得公网链接后再提交。
单条上限 16 秒。 超过会被服务端拒绝。较长的视频请先切分成不超过 16 秒的片段, 分别超分后再拼接。
时长与计费
duration 既是必填参数,也是计费依据——费用与传入的 duration 成正比,
按秒计算,2K 档单价约为 1080P 档的两倍。
:::caution duration 必须填源视频的真实时长
平台按 duration 预扣费,不会去核对源视频的实际长度。填大了会多扣,填小了也不会让任务变便宜或变快。
提交前请先读取源视频的真实时长(例如用 ffprobe),向上取整到整秒后传入。
duration 缺失或非正数会返回 400 invalid_duration。
:::
超过 16 秒的请求仍会按传入时长预扣费,随后才被服务端拒绝。请在客户端提前拦截, 避免不必要的扣费与退款流程。
查询和下载
与其他视频模型完全一致,建议每 5~10 秒轮询一次:
curl --fail-with-body \
'https://mzsjai.com/v1/video/generations/task_a1b2c3d4' \
-H "Authorization: Bearer ${MOZIA_API_KEY}"
status 变为 succeeded 后下载结果:
curl --fail-with-body -L \
'https://mzsjai.com/v1/video/generations/task_a1b2c3d4/content' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-o upscaled.mp4
:::note 刚提交时的状态
任务刚创建的头几秒,查询可能返回尚未就绪的中间状态。这不代表失败,
继续按间隔轮询即可,通常几次之后转为处理中。只有明确返回 failed 才是真正失败。
:::
结果文件明显大于源视频。16 秒的 1080P 输出可达 10 MB 量级,下载请设置足够的超时时间。
错误处理
| 状态码 | code | 触发条件 |
|---|---|---|
400 | invalid_request | 缺少 prompt |
400 | invalid_duration | duration 缺失、为 0 或非正数 |
400 | — | 源视频地址不可访问,或时长超过 16 秒 |
403 | insufficient_user_quota | 账户余额不足以覆盖本次预扣费 |
429 | — | 触发限流 |
500 / 502 / 503 | — | 服务异常,使用指数退避有限重试 |
其余通用错误见视频生成。
接入建议
- 提交前用
ffprobe读出源视频真实时长,向上取整后传入duration,避免多扣费。 - 在客户端就拦掉超过 16 秒的请求,不要依赖服务端报错。
- 源视频链接如果带有效期,请确保在任务执行期间保持可访问。
- 超分是计算密集任务,排队与处理都需要时间,请设置合理的总等待时间并限制轮询频率。