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,會比一次提交所有高階參數更容易定位問題。