Gemini Omni Flash:Google 的對話式影片生成與編輯模型怎麼用

整理 Gemini Omni Flash 的定位、文生影片、圖生影片、有狀態影片編輯、URI 傳送、提示寫法、技術限制與開發者接入建議。

Gemini Omni Flash 是 Google 在 Gemini API 中提供的預覽版多模態影片模型,模型名稱為 gemini-omni-flash-preview。它面向高速影片生成、影片編輯與鏡頭控制,重點不只是「根據一句話生成影片」,而是把文字、圖片、音訊、影片與多輪互動放進同一個工作流。

這類能力最值得關注的地方,是影片生成開始從一次性輸出走向可迭代編輯。開發者可以先生成一段影片,再用後續提示修改光效、背景、物體、文字或風格,並透過 previous_interaction_id 讓模型沿用上一輪影片狀態。對短影片工具、廣告素材、產品展示、教育內容與創意原型來說,這比每次重新生成更接近真實工作流。

需要先明確一點:Gemini Omni Flash 目前仍是預覽版。它適合實驗、原型驗證與內部工具接入,但不應該在沒有備援方案的情況下直接承擔關鍵生產流程。

Gemini Omni Flash 能做什麼

官方文件把 Gemini Omni Flash 定位為高效能多模態模型,核心能力可以概括為三類:

  • 文生影片:輸入文字提示,生成帶音訊的影片。
  • 圖生影片:上傳參考圖片,再用提示描述動作、鏡頭與氛圍。
  • 有狀態影片編輯:基於上一輪生成的影片繼續修改,不必完整重述所有畫面細節。

它和傳統影片模型的差異主要在「互動」。透過 Gemini API 的 Interactions API,一次生成或編輯會成為一個 interaction。後續請求可以引用之前的 interaction,讓模型理解上下文,並盡量保留未被要求修改的內容。

最小呼叫方式

Gemini Omni Flash 使用 interactions.create 呼叫。最簡單的文生影片請求只需要模型名稱和提示詞:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A marble rolling fast on a chain reaction style track, continuous smooth shot."
)

with open("marble.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

如果直接走 REST API,請注意回應結構和 SDK 有差異。SDK 會提供 interaction.output_video 這樣的便利欄位;REST 回應裡通常需要從 steps 陣列中的 model_output 找到影片內容。

控制畫幅和輸出

預設輸出是橫向 16:9。如果要生成直式影片,可以在 response_format 中設定 aspect_ratio

1
2
3
4
5
6
7
8
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A futuristic city with neon lights and flying cars, cyberpunk style",
    response_format={
        "type": "video",
        "aspect_ratio": "9:16"
    }
)

這對短影片、廣告素材和行動端內容尤其重要。建議在產品層把橫向和直式作為明確選項,而不是只讓使用者在提示詞裡描述,因為參數比自然語言更穩定。

圖生影片怎麼接入

圖生影片的輸入是圖片加文字。圖片可以作為動作參考、主體參考、風格參考或起始幀。最基本的輸入結構是:

1
2
3
4
5
6
7
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "Turn this into realistic footage, using the drawing only as a guide for movement."}
    ],
)

實際使用時,不要只寫「讓它動起來」。更好的提示應說明動作、鏡頭、場景、光效和需要保留的元素。例如產品圖生成短影片時,可以寫清楚產品應保持外觀一致、鏡頭如何移動、背景如何變化,以及不要改變品牌標識。

如果輸入裡有多張圖片,建議用 video_config.task 指明任務類型,減少模型猜測:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "Use this image as a reference and generate a cinematic product shot."}
    ],
    generation_config={
        "video_config": {
            "task": "image_to_video"
        }
    },
)

task 可用於區分 text_to_videoimage_to_videoreference_to_videoedit。對應用開發來說,這是一個值得暴露給進階使用者或內部範本系統的參數。

有狀態影片編輯

有狀態編輯是 Gemini Omni Flash 更像「創作工具」而不是「單次生成介面」的地方。第一輪生成影片後,第二輪可以用 previous_interaction_id 引用上一輪結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
first = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A woman playing violin outdoors."
)

second = client.interactions.create(
    model="gemini-omni-flash-preview",
    previous_interaction_id=first.id,
    input="Make the violin invisible. Keep everything else the same."
)

這裡的關鍵不是寫長提示,而是寫準改動。官方提示指南也強調,影片編輯通常更適合短指令。要修改某個局部元素時,可以追加 Keep everything else the same.,減少模型把其他畫面也一起改掉的機率。

編輯自己的影片

如果要編輯使用者上傳的影片,官方建議先透過 Files API 上傳影片,再把檔案 URI 作為輸入傳給 Gemini Omni Flash。原因很簡單:影片檔案可能很大,直接塞 base64 不利於請求體大小和穩定性。

接入這類功能時,產品層至少要處理四件事:

  • 上傳後輪詢檔案狀態,確認不再是 PROCESSING
  • 處理 FAILED 狀態,並給使用者可理解的失敗原因。
  • 對大檔案、長影片和高解析度素材設定明確限制。
  • 在不支援上傳影片編輯的地區隱藏或降級該功能。

官方文件也提醒,並非所有地區都支援編輯上傳影片。面向全球使用者時,不要把「可編輯模型生成影片」和「可編輯使用者上傳影片」混為一談。

大影片建議使用 URI 傳送

如果生成影片超過 4MB,建議在 response_format 裡使用 delivery: "uri"。這樣回應返回的是 Google 託管 URI,客戶端再輪詢狀態並下載影片,而不是在 JSON 裡直接返回一大段 base64。

這對 Web 應用很實用:前端可以先顯示任務進度,後端負責輪詢和下載,避免瀏覽器處理巨大的內嵌回應。需要注意的是,官方文件提到 GET /v1beta/interactions/{id} 目前可能仍會在 data 欄位返回內嵌 base64,uri 欄位只保證在初始建立回應或 SSE 串流裡提供。因此如果你的流程依賴 URI,最好在建立請求的回應階段就保存好相關資訊。

提示詞寫法:把鏡頭說清楚

Gemini Omni Flash 預設可能生成多個鏡頭。如果你需要單鏡頭,要明確寫:

  • 單個不間斷場景;
  • 連續鏡頭;
  • 不要場景剪輯。

如果你需要控制節奏,可以用自然語言描述時間點,例如「3 秒後人物進入畫面」,也可以寫成 [0-3s][3-6s] 這樣的時間段。對廣告、教學和產品展示來說,這比只描述畫面更可控。

影片裡需要文字時,也應該把文字內容直接寫清楚。模型可以嘗試渲染可讀文字,但如果提示裡沒有定義招牌、字幕或螢幕文字,它可能會生成不穩定或無意義的文字。

目前限制

Gemini Omni Flash 預覽版還有不少邊界,接入前需要認真看一遍:

  • 歐洲經濟區、瑞士和英國不支援上傳和編輯包含未成年人的圖片。
  • 某些可識別人物的圖片不支援上傳和編輯。
  • 歐洲經濟區、瑞士和英國使用者目前不能編輯上傳影片,但可以編輯模型生成的影片。
  • 目前 API 不支援上傳音訊參考。
  • 不支援跨多個影片進行引用或推理。
  • 不支援影片延伸、影片插值和語音編輯。
  • 不支援預配吞吐量。
  • 不支援系統指令、溫度、top_p、停止序列和負面提示等常見生成參數。
  • 不支援把 YouTube 影片作為媒體來源。

這些限制會直接影響產品設計。比如面向企業使用者時,要把地區、人物素材、上傳影片、審核策略和失敗提示都放進流程,而不是只做一個輸入框和生成按鈕。

開發者接入建議

如果你準備把 Gemini Omni Flash 接進自己的應用,可以按這個順序做:

  1. 先做文生影片 MVP,只支援 16:99:16 兩種畫幅。
  2. 增加圖生影片,限制上傳圖片格式和大小,並提供提示範本。
  3. 再做有狀態編輯,把每輪 interaction.id 存到任務記錄裡。
  4. 對大影片啟用 URI 傳送,避免 base64 回應拖垮前後端。
  5. 把地區限制、內容安全失敗、檔案處理失敗和逾時都做成明確狀態。
  6. 最後再開放多圖片參考、時間碼、文字渲染和更複雜的鏡頭範本。

它現在更適合「創意工作流工具」而不是普通聊天介面。好的產品體驗應該圍繞任務來組織:生成短廣告、讓產品圖動起來、替換背景、修改光效、加字幕、做直式版本,而不是把所有能力都塞進一個自由文字框。

小結

Gemini Omni Flash 的價值在於把影片生成、圖片參考和多輪編輯放進同一個 Interactions API 流程裡。它不是最穩妥的生產級影片管線,但已經很適合做創意原型、素材生成工具和內部自動化流程。

真正接入時,重點不只是會呼叫 gemini-omni-flash-preview,而是要把任務狀態、檔案上傳、地區限制、提示範本和失敗處理一起設計好。影片模型越強,產品層越需要把邊界說清楚。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計