中文(繁體)

目前位置: 首頁> Gemini 教學> Gemini API 如何使用Veo 生成視頻

Gemini API 如何使用Veo 生成視頻

作者: LoRA 時間:

Gemini API 可讓您使用Veo 2,這是Google 的先進視頻生成模型。 Veo 旨在幫助您構建新一代AI 應用,將用戶的提示和圖片轉換為高品質的視頻素材資源。

一、Veo 簡介

注意: Veo 是一項付費功能,無法在免費層級中運行。 如需了解詳情,請訪問價格頁面。

Veo 是Google 迄今為止最強大的視頻生成模型。它可以生成各種電影和視覺風格的視頻,捕捉提示中的細微之處,以便在各個畫面中一致呈現精緻細節。

規格

模態

文本轉視頻生成

圖片轉視頻生成

請求延遲時間

最短:11 秒

最長:6 分鐘(高峰時段)

可變長度生成5-8 秒
解決方法720p
幀速率24 幀/秒
寬高比

16:9 - 橫向

9:16 - 縱向

輸入語言(文字轉視頻)英語

注意:如需詳細了解Veo 的使用限制,請參閱模型價格和速率限制頁面。

Veo 製作的視頻會使用SynthID(我們用於嵌入水印和識別AI 生成內容的工具)添加水印,並通過安全過濾器和記憶檢查流程,以幫助降低隱私、版權和偏見風險。

準備工作

在調用Gemini API 之前,請確保您已安裝所選的SDK,並已配置好Gemini API 密鑰,可以使用。

如需將Veo 與Google Gen AI SDK 搭配使用,請確保您已安裝以下某個版本:

1. Python v1.10.0 或更高版本

2. TypeScript 和JavaScript v0.8.0 或更高版本

3. Go v1.0.0 或更高版本

二、生成視頻

本部分提供了使用文本提示使用圖片生成視頻的代碼示例。

1. 根據文本生成

您可以使用以下代碼通過Veo 生成視頻:

Python

 import time
from google import genai
from google.genai import types
client = genai.Client()  # read API key from GOOGLE_API_KEY
operation = client.models.generate_videos(
   model="veo-2.0-generate-001",
   prompt="Panning wide shot of a calico kitten sleeping in the sunshine",
   config=types.GenerateVideosConfig(
       person_generation="dont_allow",  # "dont_allow" or "allow_adult"
       aspect_ratio="16:9",  # "16:9" or "9:16"
   ),
)
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")  # save the video

JavaScript

 import { GoogleGenAI } from "@google/genai";
import { createWriteStream } from "fs";
import { Readable } from "stream";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
 let operation = await ai.models.generateVideos({
   model: "veo-2.0-generate-001",
   prompt: "Panning wide shot of a calico kitten sleeping in the sunshine",
   config: {
     personGeneration: "dont_allow",
     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=GOOGLE_API_KEY`); // append your API key
   const writer = createWriteStream(`video${n}.mp4`);
   Readable.fromWeb(resp.body).pipe(writer);
 });
}
main();

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-2.0-generate-001:predictLongRunning?key=${GOOGLE_API_KEY}" 
 -H "Content-Type: application/json" 
 -X "POST" 
 -d '{
   "instances": [{
       "prompt": "Panning wide shot of a calico kitten sleeping in the sunshine"
     }
   ],
   "parameters": {
     "aspectRatio": "16:9",
     "personGeneration": "dont_allow",
   }
 }' | tee result.json | jq .name | sed 's/"//g' > op_name

此代碼大約需要2-3 分鐘才能運行完畢,但如果資源受限,則可能需要更長時間。運行完成後,您應該會看到如下視頻:

小猫在阳光下睡觉。

如果您看到錯誤消息,而不是視頻,則表示資源有限,您的請求無法完成。在這種情況下,請再次運行代碼。

生成的視頻會在服務器上存儲2 天,之後就會被移除。如果您想保存生成的視頻的本地副本,則必須在生成後的2 天內運行result()和save()。

2. 根據圖片生成

您還可以使用圖片生成視頻。以下代碼使用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({ apiKey: "GOOGLE_API_KEY" });
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

然後,使用生成的圖片作為第一幀生成視頻:

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 only accepts "dont_allow" for image-to-video
     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({ apiKey: "GOOGLE_API_KEY" });
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=GOOGLE_API_KEY`, // append your API key
   );
   const writer = createWriteStream(`video${n}.mp4`);
   Readable.fromWeb(resp.body).pipe(writer);
 });
}
main();

三、Veo 模型參數

(命名慣例因編程語言而異。)

1. prompt :視頻的文本提示。 image參數是可選的。

2. image :要用作視頻第一幀的圖片。 prompt參數是可選的。

3. negativePrompt :一個文本字符串,用於描述您想要阻止模型生成的內容

4. aspectRatio :更改生成的視頻的寬高比。支持的值為"16:9"和"9:16"。默認值為"16:9"。

5. personGeneration :允許模型生成人物視頻。支持以下值:

文本轉視頻生成:

"dont_allow" :禁止在圖片中包含人物或人臉。

"allow_adult" :生成包含成人但不包含兒童的視頻。

圖片轉視頻生成功能:

"dont_allow" :圖片轉視頻生成的默認值,也是唯一值。

6. numberOfVideos :請求的輸出視頻, 12

7. durationSeconds :每個輸出視頻的時長(以秒為單位),介於58之間。

8. enhance_prompt :啟用或停用提示重寫器。默認處於啟用狀態。

四、可以嘗試的操作

如需充分利用Veo,請在提示中加入視頻專用術語。 Veo 可以理解與以下內容相關的各種術語:

1.鏡頭構圖:指定鏡頭中的取景和正文數量(例如,“單人鏡頭”“雙人鏡頭”“肩上鏡頭”)。

2.相機定位和移動:使用“平視”“高角度”“蟲眼視角”“搖臂拍攝”“縮放拍攝”“平移拍攝”和“跟踪拍攝”等術語來控制相機的位置和移動。

3.對焦和鏡頭效果:使用“淺景深”“深景深”“柔焦”“微距鏡頭”和“廣角鏡頭”等術語來實現特定的視覺效果。

4.整體風格和主題:通過指定“科幻片”“愛情喜劇片”“動作片”或“動畫”等風格,引導Veo 的創意方向。您還可以描述您想要的正文和背景,例如“城市景觀”“自然”“車輛”或“動物”。

五、Veo 提示指南

Veo 指南的這一部分包含您可以使用Veo 創建的視頻示例,並介紹瞭如何修改提示以生成不同的結果。

1. 安全過濾器

Veo 會在Gemini 中應用安全過濾器,以確保生成的視頻和上傳的照片不含冒犯性內容。我們會屏蔽違反條款和準則的提示。

2. 提示撰寫的基礎知識

好的提示應具有描述性且清晰。為了讓生成的視頻盡可能貼近您的預期,請先確定核心創意,然後通過添加關鍵字和修飾符來優化創意。

問題應包含以下元素:

1.正文:您希望在視頻中呈現的對象、人物、動物或場景。

2.背景:正文所處的背景或環境。

3.動作:正文正在執行的操作(例如行走奔跑轉頭)。

4.風格:可以是常規內容,也可以是非常具體的內容。考慮使用特定的電影類型關鍵字,例如恐怖片黑色電影,或卡通等動畫風格。

5.相機運動:[可選] 相機的拍攝方式,例如航拍平視俯拍低角度拍攝

6.構圖:[可選] 畫面的取景方式,例如廣角鏡頭特寫鏡頭特特寫鏡頭

7.Ambiance :[可選] 色彩和光線對場景的影響,例如藍色調夜晚暖色調

有關撰寫提示的更多提示

以下提示可幫助您撰寫用於生成視頻的提示:

1.使用描述性語言:使用形容詞和副詞為Veo 描繪清晰的畫面。

2.提供背景信息:根據需要,添加背景信息以幫助模型了解您的需求。

3.參考特定藝術風格:如果您有特定的審美觀,請參考特定藝術風格或藝術運動。

4.利用提示工程工具:可考慮探索提示工程工具或資源,以幫助您優化提示並實現最佳結果。

5.增強個人和群組圖片中的面部細節:指定面部細節作為照片的焦點,例如在提示中使用肖像一詞。

3. 提示和輸出示例

本部分提供了幾個提示,重點介紹了描述性詳細信息如何提升每段視頻的效果。

冰柱

本視頻演示瞭如何在問題中使用問題撰寫基礎知識中的元素。

提示生成的輸出
冰凍岩壁(背景)上正在融化的冰柱(正文)的特寫鏡頭(構圖),採用冷色調(氛圍),並通過縮放(攝像頭運動)來保持水滴的特寫細節(動作)。藍色背景下的滴水冰柱。

一位男士正在打電話

這些視頻演示瞭如何通過提供越來越具體的詳細信息來修改問題,以便Veo 按照您的喜好優化輸出結果。

提示生成的輸出分析
攝像機推車拍攝,特寫了一名身穿綠色風衣的絕望男子。他正在使用帶有綠色霓虹燈的旋轉式壁掛電話撥打電話。它看起來像電影場景。一名男子正在打電話。這是根據提示生成的第一個視頻。
電影般的特寫鏡頭跟隨一位穿著風雨殘破的綠色風衣的絕望男子,他撥打著安裝在粗糙磚牆上的旋轉電話,而綠色霓虹燈的幽光籠罩著他。攝像機推近,顯示了他的下巴緊繃,以及他努力撥打電話時臉上刻印的絕望。淺景深將焦點對准他皺起的眉頭和黑色旋轉電話,背景被模糊化為霓虹色和模糊陰影的海洋,營造出緊迫感和孤獨感。一位男士正在打電話提示越詳細,視頻的畫面越聚焦,環境越豐富。
視頻中,一台老式旋轉電話靠在牆上,牆上散發著詭異的綠色霓虹光芒,身穿綠色風衣的絕望男子正在使用這部電話,鏡頭以平滑的動作推向男子。攝像頭從中距離開始,慢慢靠近男子的臉部,展示他急切撥打電話時的慌張表情和眉上的汗水。畫面聚焦於男子的手,他的手指在撥號盤上摸索,拼命嘗試連接。綠色的霓虹燈在牆上投下長長的陰影,更增添了緊張的氛圍。畫面構圖旨在強調男子的孤獨和絕望,突出霓虹燈的明亮光芒與男子的堅定決心之間的鮮明對比。一名男子正在打電話。添加更多細節可讓正文呈現逼真的表情,並營造出生動而富有感染力的場景。

雪豹

此示例演示了Veo 可能會針對簡單的問題生成的輸出。

提示生成的輸出
一隻毛髮如雪豹的可愛生物在冬季森林中漫步,採用3D 卡通風格渲染。雪豹無精打采。

奔跑的雪豹

此提示更詳細,並展示了生成的輸出結果,可能更接近您在視頻中想要的內容。

提示生成的輸出
以歡快的卡通風格製作短視頻3D 動畫場景。一隻可愛的生物,毛皮如雪豹,眼睛又大又有神,身形圓潤可愛,在奇幻的冬季森林中快樂地蹦跳。場景應包含圓形的白雪覆蓋的樹木、輕柔飄落的雪花,以及透過樹枝的溫暖陽光。該生物的彈跳動作和燦爛笑容應傳達出純粹的喜悅。採用明亮、歡快的色彩和俏皮的動畫,營造積極向上、溫暖人心的氛圍。雪豹跑得更快了。

4. 通過寫入元素的示例

以下示例展示瞭如何按每個基本元素優化問題。

主題

以下示例展示瞭如何指定主題說明。

主題說明提示生成的輸出
此說明可以包含一個主題,也可以包含多個主題和操作。在這裡,我們的主題是“白色混凝土公寓樓”。一棟白色混凝土公寓樓的建築渲染圖,採用流暢的有機形狀,與茂密的綠色植物和未來主義元素無縫融合佔位符。

上下文

以下示例展示瞭如何指定上下文。

上下文提示生成的輸出
主體所處的背景或環境非常重要。嘗試將正文置於各種背景下,例如繁忙的街道、外太空。一顆衛星在外太空中漂浮,背景是月亮和一些星星。在地球大氣層中漂浮的衛星。

操作

此示例展示瞭如何指定操作。

操作提示生成的輸出
拍攝對像在做什麼,例如走路、跑步或轉頭。寬鏡頭拍攝的畫面:一名女子在海灘上散步,在日落時分朝著地平線滿意而放鬆地凝視。日落絕對是美麗的。

樣式

此示例展示瞭如何指定樣式。

樣式提示生成的輸出
您可以添加關鍵字來提升生成畫質,並使其更接近預期的風格,例如淺景深、電影畫面、極簡主義、超現實主義、復古、未來主義或雙重曝光。黑色電影風格,一男一女在街上散步,神秘、電影感、黑白。黑色電影風格非常漂亮。

相機移動

此示例展示瞭如何指定相機運動。

相機移動提示生成的輸出
攝像頭動作選項包括第一人稱視角拍攝、航拍、跟踪無人機視圖或跟踪拍攝。在加拿大夜晚下雨時,從老式汽車駕駛艙拍攝的POV 鏡頭,具有電影質感。日落真是太美了。

構圖

此示例展示瞭如何指定構圖。

構圖提示生成的輸出
取景方式(廣角、特寫、低角度)。特寫鏡頭拍攝的眼睛,其中反射出城市景色。日落真是太美了。

製作一個視頻,其中包含廣角鏡頭拍攝的衝浪者手持衝浪板在沙灘上行走的畫面,以及美麗的日落,採用電影般的效果。日落真是太美了。

氛圍

此示例展示瞭如何指定氛圍。

氛圍提示生成的輸出
調色板在攝影中發揮著至關重要的作用,會影響氛圍並傳達預期的情感。你可以嘗試使用“柔和的橙色暖色調”“自然光”“日出”或“日落”等指令。例如,溫暖的金色調可以為照片注入浪漫而富有氛圍感。在陽光明媚的公園裡,一個女孩抱著可愛的金毛獵犬小狗的特寫鏡頭。小女孩懷中抱著一隻小狗。

電影般的特寫鏡頭,畫面中一位傷心的女士在雨中乘坐公交車,冷色調藍色,傷感氛圍。一位乘坐公交車的女士表情憂傷。

5. 使用參考圖片生成視頻

您可以使用Veo 的圖片轉視頻功能,讓圖片動起來。 您可以使用現有素材資源,也可以嘗試使用Imagen生成新素材資源。

提示生成的輸出
手持巧克力棒的兔子。download (2).jpeg
兔子逃跑了。兔子正在逃跑。

6. 否定提示

否定提示是一種強大的工具,有助於指定您希望在視頻中出現的元素。在“否定提示”字樣後面,說明您想要阻止模型生成的內容。請按照以下提示操作。

❌ 請勿使用指令性語言或“沒有”或“不”等字詞。例如,“無牆壁”或“不顯示牆壁”。

✅ 請描述您不想看到的內容。例如,“牆、框架”,表示您不希望視頻中出現牆或框架。

提示生成的輸出
生成一個簡短的樣式化動畫,其中顯示一棵孤獨的大橡樹,葉子在強風中劇烈搖擺。樹應採用略微誇張、不拘一格的形式,並具有動態流暢的樹枝。葉子應呈現各種秋色,在風中旋轉舞動。動畫應使用溫暖、富有吸引力的配色方案。使用文字的樹。
生成一個簡短的樣式化動畫,其中顯示一棵孤獨的大橡樹,葉子在強風中劇烈搖擺。樹應採用略微誇張、不拘一格的形式,並具有動態流暢的樹枝。葉子應呈現各種秋色,在風中旋轉舞動。動畫應使用溫暖、富有吸引力的配色方案。
包含負面提示- 城市背景、人工建築、黑暗、暴風或威脅氣氛。
不含否定字詞的樹。

7. 寬高比

Gemini Veo 視頻生成功能支持以下兩個寬高比:

寬高比說明
寬屏或16:9電視、顯示器和手機屏幕(橫向)的最常用寬高比。如果您想拍攝更多背景(例如風景),請使用這種寬高比。
縱向或9:16旋轉的寬屏。這種寬高比深受短視頻應用(例如YouTube Shorts)的歡迎。可將這種寬高比用於具有強烈垂直方向的肖像或較高對象,例如建築物、樹或瀑布。

寬屏

此提示是寬屏寬高比為16:9 的示例。

提示生成的輸出
製作一段視頻,畫面中一名男子在1970 年代的棕櫚泉駕駛紅色敞篷車,無人機跟踪拍攝,陽光溫暖,陰影長長。瀑布非常美麗。

縱向

此提示是縱向寬高比為9:16 的示例。

提示生成的輸出
製作一個視頻,重點展示茂密熱帶雨林中雄偉壯觀的夏威夷瀑布的流暢動作。重點呈現逼真的水流、細緻的樹葉和自然光線,營造寧靜氛圍。拍攝奔騰的河水、迷霧般的氛圍以及透過茂密樹冠灑落的陽光。使用流暢的電影鏡頭運鏡來展示瀑布及其周圍環境。力求營造寧靜、真實的色調,將觀看者帶入夏威夷熱帶雨林的寧靜美景。瀑布非常美麗。

你可以通過Veo Colab 獲得更多生成AI 視頻的經驗。