Veo 是 Google 的高保真影片生成模型,可生成各種電影和視覺風格的影片。Veo 會擷取提示的細微差異,在各個影格中呈現精細的細節。
本指南說明如何使用 Veo 生成影片。如需撰寫影片提示的訣竅,請參閱 Veo 提示指南。
Veo 版本
Gemini API 提供兩種影片生成模型:Veo 3 和 Veo 2。 建議使用最新模型 Veo 3,因為這款模型品質優異,且具備音訊生成功能。
Veo 3 屬於預先發布版,可能不適合用於大規模製作。Veo 2 為穩定版,可提供更優質的製作體驗。
如需模型主要功能差異的詳細指引,請參閱「模型版本比較」一節。
以文字生成影片
本節的程式碼範例使用 Veo 3 生成整合音訊的影片。
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
operation = client.models.generate_videos(
model="veo-3.0-generate-preview",
prompt="Panning wide shot of a purring kitten sleeping in the sunshine",
config=types.GenerateVideosConfig(
person_generation="allow_all", # "allow_adult" and "dont_allow" for Veo 2 only
aspect_ratio="16:9", # "16:9", and "9:16" for Veo 2 only
),
)
while not operation.done:
time.sleep(20)
operation = client.operations.get(operation)
for n, generated_video in enumerate(operation.response.generated_videos):
client.files.download(file=generated_video.video)
generated_video.video.save(f"video{n}.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
import { createWriteStream } from "fs";
import { Readable } from "stream";
const ai = new GoogleGenAI({});
async function main() {
let operation = await ai.models.generateVideos({
model: "veo-3.0-generate-preview",
prompt: "Panning wide shot of a purring kitten sleeping in the sunshine",
config: {
personGeneration: "allow_all",
aspectRatio: "16:9",
},
});
while (!operation.done) {
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
operation.response?.generatedVideos?.forEach(async (generatedVideo, n) => {
const resp = await fetch(`${generatedVideo.video?.uri}&key=GEMINI_API_KEY`); // append your API key
const writer = createWriteStream(`video${n}.mp4`);
Readable.fromWeb(resp.body).pipe(writer);
});
}
main();
Go
package main
import (
"context"
"fmt"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
videoConfig := &genai.GenerateVideosConfig{
AspectRatio: "16:9",
PersonGeneration: "allow_all",
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.0-generate-preview",
"Panning wide shot of a purring kitten sleeping in the sunshine",
nil,
videoConfig,
)
for !operation.Done {
time.Sleep(20 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
for n, video := range operation.Response.GeneratedVideos {
client.Files.Download(ctx, video.Video, nil)
fname := fmt.Sprintf("video_%d.mp4", n)
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
}
}
REST
# Use curl to send a POST request to the predictLongRunning endpoint.
# The request body includes the prompt for video generation.
curl "${BASE_URL}/models/veo-3.0-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "Panning wide shot of a purring kitten sleeping in the sunshine"
}
],
"parameters": {
"aspectRatio": "16:9",
"personGeneration": "allow_all",
}
}' | tee result.json | jq .name | sed 's/"//g' > op_name
# Obtain operation name to download video.
op_name=$(cat op_name)
# Check against status of operation.
while true; do
is_done=$(curl -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${op_name}" | tee op_check.json | jq .done)
if [ "${is_done}" = "true" ]; then
cat op_check.json
echo "** Attach API_KEY to download video, or examine error message."
break
fi
echo "** Video ${op_name} has not downloaded yet! Check again after 5 seconds..."
# Wait for 5 seoncds to check again.
sleep 5
done
這段程式碼大約需要一分鐘才能執行完畢,但如果資源受限,可能需要更長時間。執行完畢後,您應該會看到一隻正在睡覺的小貓影片,就像我們這裡的影片一樣。
如果看到錯誤訊息而非影片,表示資源受到限制,因此無法完成要求。在這種情況下,請再次執行程式碼。
生成的影片會在伺服器上保留 2 天,之後就會移除。如要儲存生成的影片副本,請在生成影片的 2 天內執行 result()
和 save()
。
以圖片生成影片
下列程式碼會使用 Imagen 生成圖片,然後將生成的圖片做為生成影片的起始影格。
首先,使用 Imagen 生成圖片:
Python
prompt="Panning wide shot of a calico kitten sleeping in the sunshine",
imagen = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
config=types.GenerateImagesConfig(
aspect_ratio="16:9",
number_of_images=1
)
)
imagen.generated_images[0].image
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const response = await ai.models.generateImages({
model: "imagen-3.0-generate-002",
prompt: "Panning wide shot of a calico kitten sleeping in the sunshine",
config: {
numberOfImages: 1,
},
});
// you'll pass response.generatedImages[0].image.imageBytes to Veo
Go
package main
import (
"context"
"fmt"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
config := &genai.GenerateImagesConfig{
AspectRatio: "16:9",
NumberOfImages: 1,
}
response, _ := client.Models.GenerateImages(
ctx,
"imagen-3.0-generate-002",
"Panning wide shot of a calico kitten sleeping in the sunshine",
config,
)
// you'll pass response.GeneratedImages[0].Image to Veo
}
接著,使用產生的圖片做為第一個影格,生成影片:
Python
operation = client.models.generate_videos(
model="veo-2.0-generate-001",
prompt=prompt,
image = imagen.generated_images[0].image,
config=types.GenerateVideosConfig(
person_generation="dont_allow", # "dont_allow" or "allow_adult"
aspect_ratio="16:9", # "16:9" or "9:16"
number_of_videos=2
),
)
# Wait for videos to generate
while not operation.done:
time.sleep(20)
operation = client.operations.get(operation)
for n, video in enumerate(operation.response.generated_videos):
fname = f'with_image_input{n}.mp4'
print(fname)
client.files.download(file=video.video)
video.video.save(fname)
JavaScript
import { GoogleGenAI } from "@google/genai";
import { createWriteStream } from "fs";
import { Readable } from "stream";
const ai = new GoogleGenAI({});
async function main() {
// get image bytes from Imagen, as shown above
let operation = await ai.models.generateVideos({
model: "veo-2.0-generate-001",
prompt: "Panning wide shot of a calico kitten sleeping in the sunshine",
image: {
imageBytes: response.generatedImages[0].image.imageBytes, // response from Imagen
mimeType: "image/png",
},
config: {
aspectRatio: "16:9",
numberOfVideos: 2,
},
});
while (!operation.done) {
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
operation.response?.generatedVideos?.forEach(async (generatedVideo, n) => {
const resp = await fetch(
`${generatedVideo.video?.uri}&key=GEMINI_API_KEY`, // append your API key
);
const writer = createWriteStream(`video${n}.mp4`);
Readable.fromWeb(resp.body).pipe(writer);
});
}
main();
Go
image := response.GeneratedImages[0].Image
videoConfig := &genai.GenerateVideosConfig{
AspectRatio: "16:9",
NumberOfVideos: 2,
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-2.0-generate-001",
"A dramatic scene based on the input image",
image,
videoConfig,
)
for !operation.Done {
time.Sleep(20 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
for n, video := range operation.Response.GeneratedVideos {
client.Files.Download(ctx, video.Video, nil)
fname := fmt.Sprintf("video_with_image_input_%d.mp4", n)
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
}
Veo 模型參數
(命名慣例因程式設計語言而異)。
prompt
:影片的文字提示。如果存在,image
參數為選用參數。image
:要用做影片第一個影格的圖片。如果存在,prompt
參數為選用參數。negativePrompt
:描述您要避免模型生成內容的文字字串aspectRatio
:變更生成影片的顯示比例。"16:9"
:Veo 3 和 Veo 2 皆支援這項功能。"9:16"
:僅支援 Veo 2 (預設為"16:9"
)。
personGeneration
:允許模型生成人物影片。支援的值如下:- 文字轉影片生成:
"allow_all"
:生成包含成人和兒童的影片。 目前 Veo 3 唯一可用的personGeneration
值。"dont_allow"
:僅適用於 Veo 2。不允許加入人物或臉孔。"allow_adult"
:僅適用於 Veo 2。生成包含成人的影片,但不得包含兒童。
- 圖片轉影片生成:僅限 Veo 2
"dont_allow"
:不允許加入人物或臉孔。"allow_adult"
:生成包含成人的影片,但不含兒童。
- 請參閱「限制」。
- 文字轉影片生成:
numberOfVideos
:要求輸出影片1
:支援 Veo 3 和 Veo 22
:僅支援 Veo 2。
durationSeconds
:僅適用於 Veo 2。每個輸出影片的長度 (以秒為單位),介於5
到8
之間。- 無法為 Veo 3 設定,預設設定為 8 秒。
enhancePrompt
:僅適用於 Veo 2。啟用或停用提示重寫器。 預設為啟用。- 無法為 Veo 3 設定,預設提示增強器一律開啟。
如要並列比較 Veo 3 和 Veo 2 的參數差異,請參閱「模型版本比較」表格。
規格
模式 |
|
要求延遲 |
|
生成長度可變的內容 |
|
解決方法 | 720p |
影格速率 | 24fps |
顯示比例 |
|
輸入語言 (文字轉影片) | 英文 |
限制 |
Veo 製作的影片會使用 SynthID 加上浮水印。這項工具可識別 AI 生成內容並加上浮水印,且影片會經過安全篩選器和記憶檢查程序,有助於降低隱私權、著作權和偏見風險。
Veo 提示指南
本節 Veo 指南提供使用 Veo 製作影片的範例,並說明如何修改提示來產生不同結果。
安全篩選機制
Veo 會在 Gemini 中套用安全篩選器,確保生成的影片和上傳的相片不含冒犯內容。系統會封鎖違反條款和規範的提示。
提示撰寫基本知識
好的提示應清楚詳盡,如要充分運用 Veo,請先找出核心概念,然後加入關鍵字和修飾符來修正概念,並在提示中加入影片專用術語。
提示應包含下列元素:
- 主題:影片中要出現的物體、人物、動物或風景,例如城市景觀、自然、車輛或小狗。
- 動作:主體正在執行的動作 (例如走路、跑步或轉頭)。
- 風格:使用特定電影風格關鍵字指定創意方向,例如科幻、恐怖片、黑色電影,或是動畫風格,例如卡通。
- 攝影機位置和動作:[選用] 使用「鳥瞰」、「平視」、「俯拍」、「推軌鏡頭」或「仰角」等詞彙,控制攝影機的位置和動作。
- 構圖:[選用] 鏡頭的取景方式,例如廣角鏡頭、特寫、單人鏡頭或雙人鏡頭。
- 對焦和鏡頭效果:[選用] 使用「淺景深」、「深景深」、「柔焦」、「微距鏡頭」和「廣角鏡頭」等詞彙,達到特定視覺效果。
- 氛圍:[選用] 顏色和光線對場景的影響,例如藍色調、夜晚或暖色調。
- 隱含或明確的音訊提示:[僅限 Veo 3] 使用 Veo 3 時,你可以提供音效、環境噪音和對話的提示。
撰寫提示的更多訣竅
以下提示可協助你撰寫提示,生成影片:
- 使用描述性語言:使用形容詞和副詞,讓 Veo 清楚瞭解你的想法。
- 提供背景資訊:視需要加入背景資訊,協助模型瞭解你的需求。
- 參考特定藝術風格:如果你有特定美學概念,請參考特定藝術風格或藝術運動。
- 運用提示工程工具:考慮探索提示工程工具或資源,協助您修正提示並獲得最佳結果。詳情請參閱「提示設計簡介」。
- 強化個人和團體相片中的臉部細節:在提示中指定臉部細節為相片焦點,例如使用「肖像」一詞。
提示和輸出內容範例
本節提供多個提示,著重說明詳細的描述性細節如何提升每部影片的成果。
整合音訊
這些影片會逐步示範如何提供更詳細的提示,讓 Veo 3 生成音訊。
提示 | 生成內容 |
---|---|
更多詳細資料 :特寫鏡頭,兩個人盯著牆上難以解讀的圖案,手電筒的光線閃爍。「這一定是鑰匙,」他喃喃自語,同時描繪圖案。「但這是什麼意思?」她困惑地問道,並歪著頭。潮濕的石頭、精細的雕刻、隱藏的符號。背景中傳來微弱的詭異嗡鳴聲。 |
![]() |
Less detail Camping (Stop Motion): Camper: "I'm one with nature now!" Bear:「Nature would prefer some personal space」(Nature 喜歡個人空間)。 |
![]() |
請自行試用這些提示,聽聽音訊! 試用 Veo 3
冰柱
這部影片將示範如何在提示中使用提示撰寫基本概念的元素。
提示 | 生成內容 |
---|---|
特寫鏡頭 (構圖) 拍攝冰凍岩壁 (背景) 上融化的冰柱 (主體),呈現冷調藍色 (氛圍),並放大 (鏡頭移動) 畫面,維持水滴 (動作) 的特寫細節。 |
![]() |
男子講電話
這些影片會示範如何使用越來越具體的詳細資料修訂提示,讓 Veo 根據你的喜好調整輸出內容。
提示 | 生成內容 |
---|---|
細節較少 :攝影機推軌,特寫一名身穿綠色風衣的絕望男子。他正在撥打老式轉盤壁掛電話,電話旁有綠色霓虹燈。就像電影場景。 |
![]() |
更多詳細資料 :特寫電影鏡頭跟著一名身穿綠色舊風衣的絕望男子,他正在撥打裝在粗糙磚牆上的轉盤電話,牆上綠色霓虹燈散發出詭異的光芒。鏡頭拉近,顯示他下顎的緊繃感,以及臉上因努力撥打電話而顯露的絕望。淺景深效果著重於他緊皺的眉頭和黑色轉盤電話,背景則模糊成一片霓虹色和模糊陰影,營造出急迫和孤立感。 |
![]() |
雪豹
這個範例顯示 Veo 可能為簡單提示生成的輸出內容。
提示 | 生成內容 |
---|---|
一隻毛皮類似雪豹的可愛生物在冬季森林中行走,3D 卡通風格的算繪圖。 |
![]() |
奔跑的雪豹
這則提示提供更多詳細資料,並展示生成的輸出內容,可能更符合您在影片中的需求。
提示 | 生成內容 |
---|---|
以歡樂的卡通風格製作短片 3D 動畫場景。這隻可愛的生物有著雪豹般的皮毛、大而有神的眼睛,以及圓潤友善的體態,在充滿奇幻感的冬季森林中歡快地跳躍。場景應包含圓潤的雪樹、輕柔飄落的雪花,以及穿過樹枝的溫暖陽光。生物彈跳的動作和開心的笑容應傳達純粹的喜悅。使用明亮歡快的色彩和活潑的動畫,營造溫暖歡樂的氛圍。 |
![]() |
依撰寫元素分類的範例
這些範例會依據每個基本元素,說明如何調整提示。
主旨
這個範例說明如何指定主體說明。說明可包含一個或多個主詞和動作。這裡的主題是「白色混凝土公寓大樓」。
提示 | 生成內容 |
---|---|
建築彩現圖:白色混凝土公寓大樓,具有流動的有機形狀,與茂密的綠色植物和未來元素完美融合 |
![]() |
背景資訊
這個範例說明如何指定情境。主體放置的背景或情境非常重要。嘗試將主體放在各種背景中,例如熱鬧的街道或外太空。
提示 | 生成內容 |
---|---|
衛星漂浮在外太空,背景是月球和一些星星。 |
![]() |
動作
這個範例說明如何指定動作:主體正在做什麼,例如走路、跑步或轉頭。
提示 | 生成內容 |
---|---|
廣角鏡頭拍攝的畫面:一名女子在海灘上散步,夕陽西下時,她望向地平線,神情滿足放鬆。 |
![]() |
樣式
這個範例說明如何指定樣式。你可以新增關鍵字,提升生成品質,並引導 AI 產生更符合預期風格的圖片,例如淺景深、電影劇照、極簡風、超現實、復古、未來感或雙重曝光。
提示 | 生成內容 |
---|---|
黑色電影風格,一男一女走在街上,懸疑、電影感、黑白。 |
![]() |
攝影機移動
這個範例說明如何指定攝影機動作。攝影機動作選項包括第一人稱視角、空拍視角、追蹤無人機視角或追蹤拍攝。
提示 | 生成內容 |
---|---|
POV 鏡頭:復古車輛在雨中行駛,加拿大夜景,電影感。 |
![]() |
樂曲
這個範例說明如何指定構圖:鏡頭的取景方式 (廣角、特寫、低角度等)。
提示 | 生成內容 |
---|---|
極度特寫的眼睛,反映出城市景象。 |
![]() |
製作一段影片,以廣角鏡頭拍攝衝浪者在海灘上拿著衝浪板行走,呈現美麗的日落景色,營造電影感。 |
![]() |
類別
這個範例說明如何指定氛圍。調色盤在攝影中扮演重要角色,會影響整體氛圍並傳達預期情緒。你可以嘗試「柔和的暖色調橘色」、「自然光」、「日出」或「日落」等。舉例來說,暖色調的金色調色盤可為相片注入浪漫氛圍。
提示 | 生成內容 |
---|---|
特寫:女孩在公園裡抱著可愛的黃金獵犬幼犬,陽光灑落。 |
![]() |
電影風格的特寫鏡頭:一名悲傷的女子在雨中搭乘公車,冷色調,悲傷的氛圍。 |
![]() |
使用參考圖片生成影片
你可以使用 Veo 的圖片轉影片功能,讓圖片栩栩如生。 您可以使用現有素材資源,或嘗試使用 Imagen 生成新素材資源。
提示 | 生成內容 |
---|---|
兔子拿著巧克力棒。 |
![]() |
兔子逃跑。 |
![]() |
負面提示
負面提示是強大的工具,可協助指定影片中不要的元素。在「負面提示」片語後,說明您不希望模型生成什麼內容。請參考下列提示:
❌ 請勿使用指示性用語或字詞,例如「否」或「不要」。例如「不要顯示牆壁」或「不要顯示牆壁」。
✅ 描述您不想看見的內容。例如「牆壁、框架」,表示你不想在影片中看到牆壁或框架。
提示 | 生成內容 |
---|---|
生成一段短片,以風格化的動畫呈現一棵巨大的孤立橡樹,樹葉在強風中劇烈搖曳。樹木應略為誇張,造型奇特,樹枝則應呈現動態流動的感覺。葉子應呈現各種秋季色彩,在風中旋轉飛舞。動畫應使用暖色調的調色盤,營造溫暖的氛圍。 |
![]() |
生成一段短片,以風格化的動畫呈現一棵巨大的孤立橡樹,樹葉在強風中劇烈搖曳。樹木應略為誇張,造型奇特,樹枝則應呈現動態流動的感覺。葉子應呈現各種秋季色彩,在風中旋轉飛舞。動畫應使用暖色調的調色盤,營造溫暖的氛圍。 使用負面提示 - 城市背景、人造結構、黑暗、暴風雨或威脅氛圍。 |
![]() |
顯示比例
Gemini Veo 影片生成功能支援下列兩種長寬比:
顯示比例 | 說明 |
---|---|
寬螢幕或 16:9 | 電視、螢幕和手機螢幕 (橫向) 最常見的長寬比。如要拍攝更多背景,例如風景,請使用這個模式。 |
直向或 9:16 (僅限 Veo 2) |
旋轉寬螢幕:YouTube Shorts 等短片應用程式帶動了這種螢幕比例的風潮。適用於直向人像或高聳物體,例如建築物、樹木、瀑布或建築物。 |
寬螢幕
這個提示是 16:9 寬螢幕顯示比例的範例。
提示 | 生成內容 |
---|---|
製作影片:以追蹤無人機視角拍攝一名男子在 1970 年代的棕櫚泉駕駛紅色敞篷車,陽光溫暖,陰影拉長。 |
![]() |
直向
這個提示是直向顯示比例 9:16 的範例。這個比例僅適用於 Veo 2。
提示 | 生成內容 |
---|---|
製作影片,凸顯茂密雨林中壯麗夏威夷瀑布的流暢動態。著重於真實的水流、細緻的樹葉和自然光線,營造寧靜的氛圍。捕捉奔騰的水流、霧氣瀰漫的氛圍,以及穿過茂密樹冠層的點點陽光。使用平穩的電影感攝影機動作,展示瀑布和周遭環境。盡量使用平靜寫實的色調,讓觀眾彷彿置身於夏威夷雨林的寧靜美景。 |
![]() |
模型版本比較
建議使用 Veo 3,以獲得最佳效能、保真度和品質。
下表說明 Veo 2 和目前 Veo 3 搶先版在功能、規格和參數方面的差異:
模型 | Veo 3 | Veo 2 |
---|---|---|
適用地區 | 預覽 | 穩定版 |
音訊 | 音訊和視訊 (一律開啟) | 沒有音訊 |
生成 | 文字轉影片 | 文字和圖片轉影片 |
單次要求可取得的影片數量 | 1 | 1 或 2 |
aspectRatio |
僅觀看16:9 |
16:9 或 19:6 |
personGeneration |
allow_all (無法設定) |
allow_adult 、dont_allow 或 allow_all (僅限文字轉影片) |
durationSeconds |
無法設定,僅限 8 秒 | 5 到 8 秒 |
enhancePrompt |
無法設定,一律開啟 | 啟用 (預設) 或停用 |
如要從 Veo 2 遷移至 Veo 3,請更新模型名稱,使用 Veo 3 模型代碼,並盡量減少參數變更。
後續步驟
- 透過 Veo Colab,進一步體驗生成 AI 影片的樂趣。
- 前往 Google DeepMind 網站,查看使用 Veo 2 製作的精彩範例