Veo 3.1 已进入 Gemini API,支持文本、图片和已有视频作为输入,并原生生成带音频的视频。 它不是同步返回 MP4 的普通接口,而是先创建 long-running operation,再轮询状态并下载结果。 本文按这个异步模型组织代码,同时解释首尾帧、参考图、视频扩展、分辨率和时长之间的限制。
先选 Veo 3.1、Fast 还是 Lite
官方当前提供 Veo 3.1、Veo 3.1 Fast 和 Veo 3.1 Lite 等路线。 标准版适合画面一致性、复杂镜头和高质量实验。 Fast 版更适合交互预览与批量筛选提示词。 Lite 面向更低成本和更快生成,但功能集合与最高分辨率可能不同。 模型仍可能处于 preview,生产系统要锁定模型 ID,并接受接口字段变化。 不要只在控制台里写“Veo 3.1”,代码需要使用官方文档当前列出的完整模型名。
参数组合比单个参数更重要
Veo 3.1 可用时长为 4、6 或 8 秒。
使用 1080p、4K、参考图或视频扩展时,通常要求 8 秒。
宽高比支持 16:9 和 9:16。
视频扩展目前只输出 720p。
每个请求生成一个视频。
帧率为 24 fps。
seed 可以提高相似性,但不保证完全确定性。
提交前先验证参数矩阵,能减少等待数分钟后才收到失败。
准备 API key 与 Python 环境
在 Google AI Studio 创建项目与 Gemini API key。 密钥只放环境变量:
|
|
创建独立虚拟环境:
|
|
检查包版本:
|
|
preview API 变化时,版本信息比“昨天还能运行”更有排错价值。
第一个文本生成视频请求
以下结构以官方 SDK 当前接口为准,模型 ID 执行前要与文档核对:
|
|
SDK 字段可能随 preview 更新,若属性不存在,先查看安装版本对应的官方示例。
为什么轮询间隔不要太短
生成视频比文本响应耗时长。 每秒轮询不会让视频更早完成,只会增加 API 请求和限流概率。 官方 REST 示例使用 10 秒间隔,这是合理起点。 生产任务可以使用指数退避,但要设置最大间隔和总超时。 将 operation name 保存到数据库,进程重启后可以继续查询。 不要把 operation 对象只留在内存里。
保存任务状态而不是阻塞一个 HTTP 请求
Web 应用收到生成请求后,先返回自己的 job ID。 后台 worker 提交 Veo operation,并保存映射:
|
|
前端查询自己的 job endpoint,不直接暴露 Gemini key 或完整 operation 数据。
worker 崩溃后读取 operation_name 继续轮询。
图片生成视频使用首帧
首帧图片决定视频开始构图。 选择主体清晰、边缘完整、没有水印和不必要文字的图片。
|
|
图片宽高比与输出差异太大时,模型需要裁切或补画边缘。 先在本地把画布处理到 16:9 或 9:16,结果通常更可控。
首帧加尾帧用于插值过渡
Veo 3.1 支持指定开始和结束画面。 尾帧不是一张独立参考图,而是视频最终要过渡到的画面。
|
|
两个画面主体位置差异过大时,模型可能通过形变完成过渡。 先对齐相机角度、主体尺度和地平线,比增加提示词更有效。
参考图用于保持角色或产品
Veo 3.1 可使用最多三张 asset reference image。 参考图适合给出同一角色、产品或风格的不同视角。 三张图若服装、颜色和比例互相冲突,会降低一致性。 使用产品图时保留完整轮廓,避免把品牌文字当成背景纹理。 参考图、1080p 或 4K 请求要按官方限制使用 8 秒时长。 Lite 模型是否支持对应 reference image 类型,以当前参数表为准。
4K 并不是把 720p 参数改成一个字符串
4K 需要标准 Veo 3.1 路线,时长要求 8 秒。 它会增加生成时间、下载体积和后续处理资源。 先用 Fast 或 720p 验证镜头,再对通过的提示词生成 4K。
|
|
竖屏 4K 是否在当前模型和地区可用,应以请求返回与官方表格为准。 不要批量提交前才第一次验证参数组合。
让提示词同时描述画面和声音
Veo 3.1 原生生成音频,提示词可以描述环境声、对白和音乐气氛。 提示词至少包含主体、动作、场景、镜头、光线和声音。
|
|
“cinematic” 不能替代镜头运动和构图说明。
不需要文字时明确写 no text,但仍要检查成片。
视频扩展只能使用 Veo 生成的视频
扩展输入是之前生成结果中的 Video 对象,不是任意上传 MP4。
扩展会使用最后一秒或约 24 帧继续动作。
原视频最后一秒没有声音时,语音通常无法自然延续。
把要延续的动作和声音放到结尾,再请求下一段。
扩展输出目前只支持 720p。
多次扩展会积累视觉和音频漂移,长片应在剪辑软件里管理镜头。
REST 请求的核心是 operation name
不使用 SDK 时,可以调用 predictLongRunning。
|
|
响应中的 name 用于后续查询。
不要把 API key 放进 URL 查询参数或前端 JavaScript。
轮询 REST operation
|
|
done 为 false 时继续等待。
done 为 true 后,检查是 response 还是 error。
不要假设完成一定成功。
保存完整错误结构和 request ID,避免只显示“生成失败”。
下载 URL 仍然需要 API key
完成响应会给出生成视频 URI。
使用 -L 跟随重定向:
|
|
下载后检查文件类型与时长:
|
|
不要只用文件扩展名判断下载是否成功,错误 JSON 也可能被保存成 .mp4。
为生成任务设置幂等键
客户端超时后,不要立刻重新提交同一提示词。 先查自己的 job 表是否已有 operation。 用用户 ID、素材哈希、参数和业务请求 ID 生成幂等键。 相同键只允许创建一个上游 operation。 这能避免一次点击产生两份计费视频。
成本控制从两阶段生成开始
第一阶段用 Fast、720p 和 4 秒筛提示词。 第二阶段只把选中的构图升级到 8 秒、1080p 或 4K。 记录模型、分辨率、时长、operation 和最终文件大小。 按成功成片计算成本,不只看单次 API 单价。 内容审核失败、参数失败和用户取消也要计入预算。
常见参数错误
4K 配 4 秒会违反时长要求。 扩展视频请求 1080p 会违反扩展分辨率限制。 reference image 数量超过三张会被拒绝。 首尾帧只提供尾帧而没有首帧无法构成插值。 preview 模型 ID 过期会返回模型不存在。 人物生成限制还可能因地区与输入模式不同。
401、403 与 429 分开处理
401 先检查 key 是否进入当前进程。
403 检查项目权限、地区、模型访问和组织策略。
429 检查每分钟请求、并发和项目配额。
不要对 403 无限退避重试。
配额错误应进入队列或提示用户稍后再试。
下载完成后做媒体质量检查
检查容器格式、时长、分辨率、帧率和音轨。
|
|
再抽取首帧、中间帧和尾帧:
|
|
帧号要根据真实时长和 fps 调整。
安全与内容权利不能交给参数代替
上传人物、品牌和产品图片前确认使用权。 不要生成用于欺骗、骚扰或冒充的素材。 原图、提示词和生成视频都可能包含个人信息。 临时文件设置保留期限,日志不要存图片 base64。 面向用户的产品还需要内容审核、举报和删除路径。 所有生成图片和视频会受到平台水印与政策约束。
上线前的任务验收
- operation name 可持久化。
- worker 重启后能继续轮询。
- 下载跟随重定向并携带认证。
- 720p、1080p、4K 参数组合分别测试。
- 首尾帧和参考图数量符合限制。
- 重复请求不会重复计费。
- ffprobe 能确认音视频流。
- 失败任务保留错误结构而不保存密钥。
- 用户可删除素材与生成结果。
Veo 3.1 API 的工程难点主要在异步任务、参数矩阵和结果管理。先把 4 秒 720p 流程跑通,再增加首尾帧、参考图和 4K,会比一次提交所有高级参数更容易定位问题。