图像、视频与音频生成
Nuxt 模板中使用 Replicate 生成图像、视频与音频。
模板包含图像、视频和音频异步生成示例。三种能力采用相同的提供商工厂结构, 内置提供商目前只有 Replicate。
架构
每个 index.ts 管理一个单例工厂,默认提供商为 replicate,且只在存在
runtimeConfig.replicateApiToken 时注册 Replicate*Provider。类型文件定义
createTask/queryTask 接口,并统一为 pending、processing、succeeded、
failed、canceled 五种状态。
配置与路由
NUXT_REPLICATE_API_TOKEN=your-replicate-api-token| 能力 | 创建 | 查询 |
|---|---|---|
| 图像 | POST /api/ai/image | POST /api/ai/image/query |
| 视频 | POST /api/ai/video | POST /api/ai/video/query |
| 音频 | POST /api/ai/audio | POST /api/ai/audio/query |
创建路由校验各媒体类型的请求,返回 taskId 与初始状态。查询路由接收非空
taskId,读取 Replicate prediction,统一状态,并从常见输出结构提取 URL 数组。
六个路由都会调用 requireAiAuth 并使用 Zod。除非
NUXT_PUBLIC_AI_PUBLIC_DEMO=true,否则必须登录;生产环境应保持为 false。
内置页面与默认值
| 页面/组件 | 模式与当前模型 | 轮询 |
|---|---|---|
/ai/image / ImageGenerator.vue | 文生图/图生图;默认 black-forest-labs/flux-2-pro,另有 bytedance/seedream-3;三种比例 | 5 秒,5 分钟超时 |
/ai/video / VideoGenerator.vue | 文/图/视频生视频;默认 Kling 2.5 Turbo Pro,另有 Veo 3.1、Sora 2 | 15 秒,10 分钟超时 |
/ai/audio / AudioGenerator.vue | 文生音频、音频转音频;qwen/qwen3-tts;语言选择 | 5 秒,5 分钟超时 |
图像提供商把三种尺寸映射为 1:1、16:9、9:16,源图通过
input_images 发送。Veo、Sora 与通用视频路径使用不同输入 key。Qwen 适配器
负责 text、language、voice/clone mode 与可选参考音频 URL。
更换模型
修改组件中的模型选项后,按该模型当前的 Replicate schema 检查提供商输入映射。
仅替换 owner/model 字符串通常不够:prompt、比例、参考图、时长、语言和输出结构
都可能不同。
图像/音频调用方若可省略 model,还要同步修改 Replicate 提供商里的 fallback。
视频路由的 Zod schema 强制要求模型。
添加提供商
为对应能力实现接口,扩展 *ProviderType union,在工厂中注册,并扩展创建/查询
路由的 Zod provider enum。保持统一状态与 URL 字段不变,Vue 组件就无需了解
具体提供商。
生产缺口
这些示例没有持久化任务或所有权。查询路由只需要有效的提供商 task ID,不会 验证它是否属于当前用户。Replicate 结果 URL 也不是持久化产品存储方案。
上线前补充按用户配额与成本上限、任务/所有权持久化、查询授权、指数退避轮询、 取消、持久化结果存储、保留/清理、提供商超时、内容审核与可观测性。限流是推荐 附加项,不是模板已带能力。参考图片上传还需完成存储 所述的生产加固。
验证
- 所有创建接口都会拒绝未登录和畸形请求。
- 任务能经过统一状态并返回可播放/显示的 URL。
- 失败与超时会停止轮询并显示有效反馈。
- 每个可见模型都使用当前正确的 Replicate 输入映射。
- 加入所有权后,用户无法查询他人的任务。
- 加入持久化存储后,提供商 URL 失效也不会丢失生成资源。
