Veo 3.1 ist das hochmoderne Modell von Google zum Generieren von 8‑sekündigen Videos mit hoher Wiedergabetreue in 720p, 1080p oder 4K mit beeindruckendem Realismus und nativ generiertem Audio. Sie können programmatisch über die Gemini API auf dieses Modell zugreifen. Weitere Informationen zu den verfügbaren Veo-Modellvarianten finden Sie im Abschnitt Modellversionen.
Veo 3.1 eignet sich hervorragend für eine Vielzahl von visuellen und filmischen Stilen und bietet mehrere neue Funktionen:
- Videos im Hochformat: Wählen Sie zwischen Videos im Querformat (
16:9) und im Hochformat (9:16) aus. - Video verlängern: Sie können Videos verlängern, die zuvor mit Veo generiert wurden.
- Frame-spezifische Generierung: Sie können ein Video generieren, indem Sie den ersten und/oder letzten Frame angeben.
- Bildbasierte Anleitung: Sie können bis zu drei Referenzbilder verwenden, um die Inhalte Ihres generierten Videos zu steuern.
Weitere Informationen zum Schreiben effektiver Text-Prompts für die Videogenerierung finden Sie im Veo-Leitfaden zu Prompts.
Video aus Text
Wählen Sie ein Beispiel aus, um zu sehen, wie Sie ein Video mit Dialog, filmischem Realismus oder kreativer Animation generieren:
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
prompt = """A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'"""
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("dialogue_example.mp4")
print("Generated video saved to dialogue_example.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = `A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'`;
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the generated video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "dialogue_example.mp4",
});
console.log(`Generated video saved to dialogue_example.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'`
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
nil,
nil,
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the generated video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "dialogue_example.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateVideosOperation;
import com.google.genai.types.Video;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
class GenerateVideoFromText {
public static void main(String[] args) throws Exception {
Client client = new Client();
String prompt = "A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.\n" +
"A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'";
GenerateVideosOperation operation =
client.models.generateVideos("veo-3.1-generate-preview", prompt, null, null);
// Poll the operation status until the video is ready.
while (!operation.done().isPresent() || !operation.done().get()) {
System.out.println("Waiting for video generation to complete...");
Thread.sleep(10000);
operation = client.operations.getVideosOperation(operation, null);
}
// Download the generated video.
Video video = operation.response().get().generatedVideos().get().get(0).video().get();
Path path = Paths.get("dialogue_example.mp4");
client.files.download(video, path.toString(), null);
if (video.videoBytes().isPresent()) {
Files.write(path, video.videoBytes().get());
System.out.println("Generated video saved to dialogue_example.mp4");
}
}
}
REST
# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A close up of two people staring at a cryptic drawing on a wall, torchlight flickering. A man murmurs, \"This must be it. That'\''s the secret code.\" The woman looks at him and whispering excitedly, \"What did you find?\""
}
]
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o dialogue_example.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 5 seconds before checking again.
sleep 10
done
Seitenverhältnis anpassen
Mit Veo 3.1 können Sie Videos im Querformat (16:9, Standardeinstellung) oder im Hochformat (9:16) erstellen. Mit dem Parameter aspect_ratio können Sie dem Modell mitteilen, welche Sie möchten:
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
prompt = """A montage of pizza making: a chef tossing and flattening the floury dough, ladling rich red tomato sauce in a spiral, sprinkling mozzarella cheese and pepperoni, and a final shot of the bubbling golden-brown pizza, upbeat electronic music with a rhythmical beat is playing, high energy professional video."""
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
config=types.GenerateVideosConfig(
aspect_ratio="9:16",
),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("pizza_making.mp4")
print("Generated video saved to pizza_making.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = `A montage of pizza making: a chef tossing and flattening the floury dough, ladling rich red tomato sauce in a spiral, sprinkling mozzarella cheese and pepperoni, and a final shot of the bubbling golden-brown pizza, upbeat electronic music with a rhythmical beat is playing, high energy professional video.`;
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
config: {
aspectRatio: "9:16",
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the generated video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "pizza_making.mp4",
});
console.log(`Generated video saved to pizza_making.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `A montage of pizza making: a chef tossing and flattening the floury dough, ladling rich red tomato sauce in a spiral, sprinkling mozzarella cheese and pepperoni, and a final shot of the bubbling golden-brown pizza, upbeat electronic music with a rhythmical beat is playing, high energy professional video.`
videoConfig := &genai.GenerateVideosConfig{
AspectRatio: "9:16",
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
nil,
videoConfig,
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the generated video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "pizza_making.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A montage of pizza making: a chef tossing and flattening the floury dough, ladling rich red tomato sauce in a spiral, sprinkling mozzarella cheese and pepperoni, and a final shot of the bubbling golden-brown pizza, upbeat electronic music with a rhythmical beat is playing, high energy professional video."
}
],
"parameters": {
"aspectRatio": "9:16"
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o pizza_making.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 5 seconds before checking again.
sleep 10
done
Auflösung anpassen
Mit Veo 3.1 lassen sich auch direkt 720p-, 1080p- oder 4K-Videos erstellen.
Je höher die Auflösung, desto höher die Latenz. 4K-Videos sind auch teurer (siehe Preise).
Die Video-Erweiterung ist ebenfalls auf Videos mit einer Auflösung von 720 Pixeln beschränkt.
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
prompt = """A stunning drone view of the Grand Canyon during a flamboyant sunset that highlights the canyon's colors. The drone slowly flies towards the sun then accelerates, dives and flies inside the canyon."""
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
config=types.GenerateVideosConfig(
resolution="4k",
),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("4k_grand_canyon.mp4")
print("Generated video saved to 4k_grand_canyon.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = `A stunning drone view of the Grand Canyon during a flamboyant sunset that highlights the canyon's colors. The drone slowly flies towards the sun then accelerates, dives and flies inside the canyon.`;
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
config: {
resolution: "4k",
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the generated video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "4k_grand_canyon.mp4",
});
console.log(`Generated video saved to 4k_grand_canyon.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `A stunning drone view of the Grand Canyon during a flamboyant sunset that highlights the canyon's colors. The drone slowly flies towards the sun then accelerates, dives and flies inside the canyon.`
videoConfig := &genai.GenerateVideosConfig{
Resolution: "4k",
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
nil,
videoConfig,
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the generated video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "4k_grand_canyon.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A stunning drone view of the Grand Canyon during a flamboyant sunset that highlights the canyon'\''s colors. The drone slowly flies towards the sun then accelerates, dives and flies inside the canyon."
}
],
"parameters": {
"resolution": "4k"
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o 4k_grand_canyon.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 5 seconds before checking again.
sleep 10
done
Bild-zu-Video-Generierung
Im folgenden Code wird gezeigt, wie ein Bild mit Gemini 2.5 Flash Image (auch bekannt als Nano Banana) generiert und dann als Startframe für die Generierung eines Videos mit Veo 3.1 verwendet wird.
Python
import time
from google import genai
client = genai.Client()
prompt = "Panning wide shot of a calico kitten sleeping in the sunshine"
# Step 1: Generate an image with Nano Banana.
image = client.models.generate_content(
model="gemini-2.5-flash-image",
contents=prompt,
config={"response_modalities":['IMAGE']}
)
# Step 2: Generate video with Veo 3.1 using the image.
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
image=image.parts[0].as_image(),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3_with_image_input.mp4")
print("Generated video saved to veo3_with_image_input.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = "Panning wide shot of a calico kitten sleeping in the sunshine";
// Step 1: Generate an image with Nano Banana.
const imageResponse = await ai.models.generateContent({
model: "gemini-2.5-flash-image",
prompt: prompt,
});
// Step 2: Generate video with Veo 3.1 using the image.
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
image: {
imageBytes: imageResponse.generatedImages[0].image.imageBytes,
mimeType: "image/png",
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "veo3_with_image_input.mp4",
});
console.log(`Generated video saved to veo3_with_image_input.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := "Panning wide shot of a calico kitten sleeping in the sunshine"
// Step 1: Generate an image with Nano Banana.
imageResponse, err := client.Models.GenerateContent(
ctx,
"gemini-2.5-flash-image",
prompt,
nil, // GenerateImagesConfig
)
if err != nil {
log.Fatal(err)
}
// Step 2: Generate video with Veo 3.1 using the image.
operation, err := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
imageResponse.GeneratedImages[0].Image,
nil, // GenerateVideosConfig
)
if err != nil {
log.Fatal(err)
}
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "veo3_with_image_input.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateVideosOperation;
import com.google.genai.types.Image;
import com.google.genai.types.Video;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
class GenerateVideoFromImage {
public static void main(String[] args) throws Exception {
Client client = new Client();
String prompt = "Panning wide shot of a calico kitten sleeping in the sunshine";
// Step 1: Generate an image with Nano Banana:
// ...
// We assume 'image' contains the generated image from step 1,
// or is loaded from a file:
Image image = Image.fromFile("path/to/your/image.png");
// Step 2: Generate video with Veo 3.1 using the image.
GenerateVideosOperation operation =
client.models.generateVideos("veo-3.1-generate-preview", prompt, image, null);
// Poll the operation status until the video is ready.
while (!operation.done().isPresent() || !operation.done().get()) {
System.out.println("Waiting for video generation to complete...");
Thread.sleep(10000);
operation = client.operations.getVideosOperation(operation, null);
}
// Download the video.
Video video = operation.response().get().generatedVideos().get().get(0).video().get();
Path path = Paths.get("veo3_with_image_input.mp4");
client.files.download(video, path.toString(), null);
if (video.videoBytes().isPresent()) {
Files.write(path, video.videoBytes().get());
System.out.println("Generated video saved to veo3_with_image_input.mp4");
}
}
}
Referenzbilder verwenden
Veo 3.1 unterstützt jetzt bis zu drei Referenzbilder, um den Inhalt des generierten Videos zu steuern. Stellen Sie Bilder einer Person, einer Figur oder eines Produkts bereit, um das Erscheinungsbild des Motivs im Ausgabevideo beizubehalten.
Wenn Sie beispielsweise diese drei mit Nano Banana generierten Bilder als Referenzen mit einem gut formulierten Prompt verwenden, wird das folgende Video erstellt:
`dress_image` |
`woman_image` |
`glasses_image` |
|---|---|---|
|
|
|
|
Python
import time
from google import genai
client = genai.Client()
prompt = "The video opens with a medium, eye-level shot of a beautiful woman with dark hair and warm brown eyes. She wears a magnificent, high-fashion flamingo dress with layers of pink and fuchsia feathers, complemented by whimsical pink, heart-shaped sunglasses. She walks with serene confidence through the crystal-clear, shallow turquoise water of a sun-drenched lagoon. The camera slowly pulls back to a medium-wide shot, revealing the breathtaking scene as the dress's long train glides and floats gracefully on the water's surface behind her. The cinematic, dreamlike atmosphere is enhanced by the vibrant colors of the dress against the serene, minimalist landscape, capturing a moment of pure elegance and high-fashion fantasy."
dress_reference = types.VideoGenerationReferenceImage(
image=dress_image, # Generated separately with Nano Banana
reference_type="asset"
)
sunglasses_reference = types.VideoGenerationReferenceImage(
image=glasses_image, # Generated separately with Nano Banana
reference_type="asset"
)
woman_reference = types.VideoGenerationReferenceImage(
image=woman_image, # Generated separately with Nano Banana
reference_type="asset"
)
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
config=types.GenerateVideosConfig(
reference_images=[dress_reference, glasses_reference, woman_reference],
),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_reference_images.mp4")
print("Generated video saved to veo3.1_with_reference_images.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = "The video opens with a medium, eye-level shot of a beautiful woman with dark hair and warm brown eyes. She wears a magnificent, high-fashion flamingo dress with layers of pink and fuchsia feathers, complemented by whimsical pink, heart-shaped sunglasses. She walks with serene confidence through the crystal-clear, shallow turquoise water of a sun-drenched lagoon. The camera slowly pulls back to a medium-wide shot, revealing the breathtaking scene as the dress's long train glides and floats gracefully on the water's surface behind her. The cinematic, dreamlike atmosphere is enhanced by the vibrant colors of the dress against the serene, minimalist landscape, capturing a moment of pure elegance and high-fashion fantasy.";
// dressImage, glassesImage, womanImage generated separately with Nano Banana
// and available as objects like { imageBytes: "...", mimeType: "image/png" }
const dressReference = {
image: dressImage,
referenceType: "asset",
};
const sunglassesReference = {
image: glassesImage,
referenceType: "asset",
};
const womanReference = {
image: womanImage,
referenceType: "asset",
};
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
config: {
referenceImages: [
dressReference,
sunglassesReference,
womanReference,
],
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...");
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "veo3.1_with_reference_images.mp4",
});
console.log(`Generated video saved to veo3.1_with_reference_images.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `The video opens with a medium, eye-level shot of a beautiful woman with dark hair and warm brown eyes. She wears a magnificent, high-fashion flamingo dress with layers of pink and fuchsia feathers, complemented by whimsical pink, heart-shaped sunglasses. She walks with serene confidence through the crystal-clear, shallow turquoise water of a sun-drenched lagoon. The camera slowly pulls back to a medium-wide shot, revealing the breathtaking scene as the dress's long train glides and floats gracefully on the water's surface behind her. The cinematic, dreamlike atmosphere is enhanced by the vibrant colors of the dress against the serene, minimalist landscape, capturing a moment of pure elegance and high-fashion fantasy.`
// dressImage, glassesImage, womanImage generated separately with Nano Banana
// and available as *genai.Image objects.
var dressImage, glassesImage, womanImage *genai.Image
dressReference := &genai.VideoGenerationReferenceImage{
Image: dressImage,
ReferenceType: "asset",
}
sunglassesReference := &genai.VideoGenerationReferenceImage{
Image: glassesImage,
ReferenceType: "asset",
}
womanReference := &genai.VideoGenerationReferenceImage{
Image: womanImage,
ReferenceType: "asset",
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
nil, // image
&genai.GenerateVideosConfig{
ReferenceImages: []*genai.VideoGenerationReferenceImage{
dressReference,
sunglassesReference,
womanReference,
},
},
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "veo3.1_with_reference_images.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# It assumes dress_image_base64, glasses_image_base64, and woman_image_base64
# contain base64-encoded image data.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "The video opens with a medium, eye-level shot of a beautiful woman with dark hair and warm brown eyes. She wears a magnificent, high-fashion flamingo dress with layers of pink and fuchsia feathers, complemented by whimsical pink, heart-shaped sunglasses. She walks with serene confidence through the crystal-clear, shallow turquoise water of a sun-drenched lagoon. The camera slowly pulls back to a medium-wide shot, revealing the breathtaking scene as the dress'\''s long train glides and floats gracefully on the water'\''s surface behind her. The cinematic, dreamlike atmosphere is enhanced by the vibrant colors of the dress against the serene, minimalist landscape, capturing a moment of pure elegance and high-fashion fantasy."
}],
"parameters": {
"referenceImages": [
{
"image": {"inlineData": {"mimeType": "image/png", "data": "'"$dress_image_base64"'"}},
"referenceType": "asset"
},
{
"image": {"inlineData": {"mimeType": "image/png", "data": "'"$glasses_image_base64"'"}},
"referenceType": "asset"
},
{
"image": {"inlineData": {"mimeType": "image/png", "data": "'"$woman_image_base64"'"}},
"referenceType": "asset"
}
]
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o veo3.1_with_reference_images.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 10 seconds before checking again.
sleep 10
done
Ersten und letzten Frame verwenden
Mit Veo 3.1 können Sie Videos erstellen, indem Sie die Interpolation verwenden oder den ersten und letzten Frame des Videos angeben. Informationen zum Schreiben effektiver Text-Prompts für die Videogenerierung finden Sie im Veo-Leitfaden zu Prompts.
Python
import time
from google import genai
client = genai.Client()
prompt = "A cinematic, haunting video. A ghostly woman with long white hair and a flowing dress swings gently on a rope swing beneath a massive, gnarled tree in a foggy, moonlit clearing. The fog thickens and swirls around her, and she slowly fades away, vanishing completely. The empty swing is left swaying rhythmically on its own in the eerie silence."
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
image=first_image, # The starting frame is passed as a primary input
config=types.GenerateVideosConfig(
last_frame=last_image # The ending frame is passed as a generation constraint in the config
),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_interpolation.mp4")
print("Generated video saved to veo3.1_with_interpolation.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = "A cinematic, haunting video. A ghostly woman with long white hair and a flowing dress swings gently on a rope swing beneath a massive, gnarled tree in a foggy, moonlit clearing. The fog thickens and swirls around her, and she slowly fades away, vanishing completely. The empty swing is left swaying rhythmically on its own in the eerie silence.";
// firstImage and lastImage generated separately with Nano Banana
// and available as objects like { imageBytes: "...", mimeType: "image/png" }
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: prompt,
image: firstImage, // The starting frame is passed as a primary input
config: {
lastFrame: lastImage, // The ending frame is passed as a generation constraint in the config
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "veo3.1_with_interpolation.mp4",
});
console.log(`Generated video saved to veo3.1_with_interpolation.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `A cinematic, haunting video. A ghostly woman with long white hair and a flowing dress swings gently on a rope swing beneath a massive, gnarled tree in a foggy, moonlit clearing. The fog thickens and swirls around her, and she slowly fades away, vanishing completely. The empty swing is left swaying rhythmically on its own in the eerie silence.`
// firstImage and lastImage generated separately with Nano Banana
// and available as *genai.Image objects.
var firstImage, lastImage *genai.Image
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
firstImage, // The starting frame is passed as a primary input
&genai.GenerateVideosConfig{
LastFrame: lastImage, // The ending frame is passed as a generation constraint in the config
},
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "veo3.1_with_interpolation.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# It assumes first_image_base64 and last_image_base64
# contain base64-encoded image data.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
# The starting frame is passed as a primary input
# The ending frame is passed as a generation constraint in the config
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A cinematic, haunting video. A ghostly woman with long white hair and a flowing dress swings gently on a rope swing beneath a massive, gnarled tree in a foggy, moonlit clearing. The fog thickens and swirls around her, and she slowly fades away, vanishing completely. The empty swing is left swaying rhythmically on its own in the eerie silence.",
"image": {"inlineData": {"mimeType": "image/png", "data": "'"$first_image_base64"'"}}
}],
"parameters": {
"lastFrame": {"inlineData": {"mimeType": "image/png", "data": "'"$last_image_base64"'"}}
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o veo3.1_with_interpolation.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 10 seconds before checking again.
sleep 10
done
`first_image` |
`last_image` |
veo3.1_with_interpolation.mp4 |
|---|---|---|
|
|
|
|
Veo-Videos verlängern
Mit Veo 3.1 können Sie Videos, die Sie zuvor mit Veo erstellt haben, um 7 Sekunden und bis zu 20-mal verlängern.
Einschränkungen für Eingabevideos:
- Von Veo generierte Videos dürfen maximal 141 Sekunden lang sein.
- Die Gemini API unterstützt nur Videoerweiterungen für von Veo generierte Videos.
- Das Video sollte aus einer früheren Generation stammen, z. B.
operation.response.generated_videos[0].video. - Videos werden 2 Tage lang gespeichert. Wenn ein Video für die Erweiterung verwendet wird, wird der 2‑Tages-Timer für die Speicherung zurückgesetzt. Sie können nur Videos verlängern, die in den letzten zwei Tagen generiert oder referenziert wurden.
- Eingabevideos müssen eine bestimmte Länge, ein bestimmtes Seitenverhältnis und bestimmte Abmessungen haben:
- Seitenverhältnis: 9:16 oder 16:9
- Auflösung: 720p
- Videolänge: maximal 141 Sekunden
Die Ausgabe der Erweiterung ist ein einzelnes Video, in dem das vom Nutzer eingegebene Video und das generierte erweiterte Video kombiniert werden. Das Video kann bis zu 148 Sekunden lang sein.
In diesem Beispiel wird ein von Veo generiertes Video, das hier mit dem ursprünglichen Prompt zu sehen ist, mit dem Parameter video und einem neuen Prompt erweitert:
| Prompt | Ausgabe: butterfly_video |
|---|---|
| Ein Origami-Schmetterling schlägt mit den Flügeln und fliegt durch die Terrassentür in den Garten. |
|
Python
import time
from google import genai
client = genai.Client()
prompt = "Track the butterfly into the garden as it lands on an orange origami flower. A fluffy white puppy runs up and gently pats the flower."
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
video=operation.response.generated_videos[0].video, # This must be a video from a previous generation
prompt=prompt,
config=types.GenerateVideosConfig(
number_of_videos=1,
resolution="720p"
),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_extension.mp4")
print("Generated video saved to veo3.1_extension.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = "Track the butterfly into the garden as it lands on an orange origami flower. A fluffy white puppy runs up and gently pats the flower.";
// butterflyVideo must be a video from a previous generation
// available as an object like { videoBytes: "...", mimeType: "video/mp4" }
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
video: butterflyVideo,
prompt: prompt,
config: {
numberOfVideos: 1,
resolution: "720p",
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "veo3.1_extension.mp4",
});
console.log(`Generated video saved to veo3.1_extension.mp4`);
Ok
package main
import (
"context"
"log"
"os"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := `Track the butterfly into the garden as it lands on an orange origami flower. A fluffy white puppy runs up and gently pats the flower.`
// butterflyVideo must be a video from a previous generation
// available as a *genai.Video object.
var butterflyVideo *genai.Video
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
prompt,
nil, // image
butterflyVideo,
&genai.GenerateVideosConfig{
NumberOfVideos: 1,
Resolution: "720p",
},
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "veo3.1_extension.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# It assumes butterfly_video_base64 contains base64-encoded
# video data from a previous generation.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "Track the butterfly into the garden as it lands on an orange origami flower. A fluffy white puppy runs up and gently pats the flower.",
"video": {"inlineData": {"mimeType": "video/mp4", "data": "'"$butterfly_video_base64"'"}}
}],
"parameters": {
"numberOfVideos": 1,
"resolution": "720p"
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o veo3.1_extension.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 10 seconds before checking again.
sleep 10
done
Informationen zum Schreiben effektiver Text-Prompts für die Videogenerierung finden Sie im Veo-Prompt-Leitfaden.
Umgang mit asynchronen Vorgängen
Das Generieren von Videos ist eine rechenintensive Aufgabe. Wenn Sie eine Anfrage an die API senden, wird ein lang andauernder Job gestartet und sofort ein operation-Objekt zurückgegeben. Anschließend müssen Sie den Status abrufen, bis das Video bereit ist. Das ist der Fall, wenn der Status done auf „true“ gesetzt ist.
Das Herzstück dieses Prozesses ist eine Polling-Schleife, die regelmäßig den Status des Jobs prüft.
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
# After starting the job, you get an operation object.
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt="A cinematic shot of a majestic lion in the savannah.",
)
# Alternatively, you can use operation.name to get the operation.
operation = types.GenerateVideosOperation(name=operation.name)
# This loop checks the job status every 10 seconds.
while not operation.done:
time.sleep(10)
# Refresh the operation object to get the latest status.
operation = client.operations.get(operation)
# Once done, the result is in operation.response.
# ... process and download your video ...
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
// After starting the job, you get an operation object.
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: "A cinematic shot of a majestic lion in the savannah.",
});
// Alternatively, you can use operation.name to get the operation.
// operation = types.GenerateVideosOperation(name=operation.name)
// This loop checks the job status every 10 seconds.
while (!operation.done) {
await new Promise((resolve) => setTimeout(resolve, 1000));
// Refresh the operation object to get the latest status.
operation = await ai.operations.getVideosOperation({ operation });
}
// Once done, the result is in operation.response.
// ... process and download your video ...
Ok
package main
import (
"context"
"log"
"time"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
// After starting the job, you get an operation object.
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
"A cinematic shot of a majestic lion in the savannah.",
nil,
nil,
)
// This loop checks the job status every 10 seconds.
for !operation.Done {
time.Sleep(10 * time.Second)
// Refresh the operation object to get the latest status.
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Once done, the result is in operation.Response.
// ... process and download your video ...
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateVideosOperation;
import com.google.genai.types.Video;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
class HandleAsync {
public static void main(String[] args) throws Exception {
Client client = new Client();
// After starting the job, you get an operation object.
GenerateVideosOperation operation =
client.models.generateVideos(
"veo-3.1-generate-preview",
"A cinematic shot of a majestic lion in the savannah.",
null,
null);
// This loop checks the job status every 10 seconds.
while (!operation.done().isPresent() || !operation.done().get()) {
Thread.sleep(10000);
// Refresh the operation object to get the latest status.
operation = client.operations.getVideosOperation(operation, null);
}
// Once done, the result is in operation.response.
// Download the generated video.
Video video = operation.response().get().generatedVideos().get().get(0).video().get();
Path path = Paths.get("async_example.mp4");
client.files.download(video, path.toString(), null);
if (video.videoBytes().isPresent()) {
Files.write(path, video.videoBytes().get());
System.out.println("Generated video saved to async_example.mp4");
}
}
}
REST
# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A cinematic shot of a majestic lion in the savannah."
}
]
}' | jq -r .name)
# This loop checks the job status every 10 seconds.
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Once done, the result is in status_response.
# ... process and download your video ...
echo "Video generation complete."
break
fi
# Wait for 10 seconds before checking again.
echo "Waiting for video generation to complete..."
sleep 10
done
Veo API-Parameter und ‑Spezifikationen
Dies sind die Parameter, die Sie in Ihrer API-Anfrage festlegen können, um den Prozess der Videogenerierung zu steuern.
| Parameter | Beschreibung | Veo 3.1 und Veo 3.1 Fast | Veo 3 und Veo 3 Fast | Veo 2 |
|---|---|---|---|---|
prompt |
Die Textbeschreibung für das Video. Unterstützt Audio-Hinweise. | string |
string |
string |
negativePrompt |
Text, der beschreibt, was nicht im Video enthalten sein darf. | string |
string |
string |
image |
Ein Ausgangsbild für die Animation. | Image Objekt |
Image Objekt |
Image Objekt |
lastFrame |
Das endgültige Bild für ein Interpolationsvideo, in das übergegangen werden soll. Muss in Kombination mit dem Parameter image verwendet werden. |
Image Objekt |
Image Objekt |
Image Objekt |
referenceImages |
Bis zu drei Bilder, die als Referenzen für Stil und Inhalt verwendet werden sollen. | VideoGenerationReferenceImage-Objekt (nur Veo 3.1) |
– | – |
video |
Video, das für die Videoerweiterung verwendet werden soll. | Video-Objekt aus einer vorherigen Generation |
– | – |
aspectRatio |
Das Seitenverhältnis des Videos. | "16:9" (Standard),"9:16" |
"16:9" (Standard),"9:16" |
"16:9" (Standard),"9:16" |
resolution |
Das Seitenverhältnis des Videos. | "720p" (Standard), "1080p" (nur 8 Sekunden),"4k" (nur 8 Sekunden)"720p" nur für Erweiterung |
"720p" (Standard), "1080p" (nur 8 Sekunden),"4k" (nur 8 Sekunden)"720p" nur für Erweiterung |
Nicht unterstützt |
durationSeconds |
Länge des generierten Videos. | "4", "6", "8".Muss „8“ sein, wenn Erweiterungen oder Referenzbilder verwendet werden oder die Auflösung 1080p oder 4K beträgt |
"4", "6", "8".Muss „8“ sein, wenn Erweiterungen oder Referenzbilder verwendet werden oder die Auflösung 1080p oder 4K beträgt |
"5", "6", "8" |
personGeneration |
Steuert die Generierung von Personen. (Informationen zu regionalen Einschränkungen finden Sie unter Einschränkungen.) |
Text-zu-Video und Erweiterung:"allow_all" onlyBild-zu-Video, Interpolation und Referenzbilder: "allow_adult" only
|
Text zu Video:"allow_all" nurBild zu Video: "allow_adult" nur
|
Text zu Video: "allow_all", "allow_adult", "dont_allow"
Bild zu Video: "allow_adult" und "dont_allow"
|
Der Parameter seed ist auch für Veo 3-Modelle verfügbar.
Sie garantiert keinen Determinismus, verbessert ihn aber leicht.
Sie können die Videogenerierung anpassen, indem Sie Parameter in Ihre Anfrage aufnehmen.
Sie können beispielsweise negativePrompt angeben, um das Modell zu steuern.
Python
import time
from google import genai
from google.genai import types
client = genai.Client()
operation = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt="A cinematic shot of a majestic lion in the savannah.",
config=types.GenerateVideosConfig(negative_prompt="cartoon, drawing, low quality"),
)
# Poll the operation status until the video is ready.
while not operation.done:
print("Waiting for video generation to complete...")
time.sleep(10)
operation = client.operations.get(operation)
# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("parameters_example.mp4")
print("Generated video saved to parameters_example.mp4")
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
let operation = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: "A cinematic shot of a majestic lion in the savannah.",
config: {
aspectRatio: "16:9",
negativePrompt: "cartoon, drawing, low quality"
},
});
// Poll the operation status until the video is ready.
while (!operation.done) {
console.log("Waiting for video generation to complete...")
await new Promise((resolve) => setTimeout(resolve, 10000));
operation = await ai.operations.getVideosOperation({
operation: operation,
});
}
// Download the generated video.
ai.files.download({
file: operation.response.generatedVideos[0].video,
downloadPath: "parameters_example.mp4",
});
console.log(`Generated video saved to parameters_example.mp4`);
Ok
package main
import (
"context"
"log"
"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",
NegativePrompt: "cartoon, drawing, low quality",
}
operation, _ := client.Models.GenerateVideos(
ctx,
"veo-3.1-generate-preview",
"A cinematic shot of a majestic lion in the savannah.",
nil,
videoConfig,
)
// Poll the operation status until the video is ready.
for !operation.Done {
log.Println("Waiting for video generation to complete...")
time.Sleep(10 * time.Second)
operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
}
// Download the generated video.
video := operation.Response.GeneratedVideos[0]
client.Files.Download(ctx, video.Video, nil)
fname := "parameters_example.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
REST
# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{
"instances": [{
"prompt": "A cinematic shot of a majestic lion in the savannah."
}
],
"parameters": {
"aspectRatio": "16:9",
"negativePrompt": "cartoon, drawing, low quality"
}
}' | jq -r .name)
# Poll the operation status until the video is ready
while true; do
# Get the full JSON status and store it in a variable.
status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")
# Check the "done" field from the JSON stored in the variable.
is_done=$(echo "${status_response}" | jq .done)
if [ "${is_done}" = "true" ]; then
# Extract the download URI from the final response.
video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
echo "Downloading video from: ${video_uri}"
# Download the video using the URI and API key and follow redirects.
curl -L -o parameters_example.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
break
fi
# Wait for 5 seconds before checking again.
sleep 10
done
Veo-Prompt-Anleitung
In diesem Abschnitt finden Sie Beispiele für Videos, die Sie mit Veo erstellen können. Außerdem wird gezeigt, wie Sie Prompts anpassen, um unterschiedliche Ergebnisse zu erzielen.
Sicherheitsfilter
Veo wendet Sicherheitsfilter für Gemini an, um sicherzustellen, dass generierte Videos und hochgeladene Fotos keine anstößigen Inhalte enthalten. Prompts, die gegen unsere Nutzungsbedingungen und Richtlinien verstoßen, werden blockiert.
Grundlagen zum Schreiben von Prompts
Gute Prompts sind beschreibend und klar. Damit Sie Veo optimal nutzen können, sollten Sie zuerst Ihre Kernidee festlegen, sie dann durch Hinzufügen von Keywords und Modifikatoren verfeinern und videospezifische Begriffe in Ihre Prompts einfügen.
Ihr Prompt sollte die folgenden Elemente enthalten:
- Motiv: Das Objekt, die Person, das Tier oder die Landschaft, die Sie in Ihrem Video haben möchten, z. B. Stadtansicht, Natur, Fahrzeuge oder Welpen.
- Aktion: Was das Subjekt tut (z. B. gehen, laufen oder den Kopf drehen).
- Stil: Geben Sie die kreative Ausrichtung mit bestimmten Filmstil-Schlüsselwörtern an, z. B. Science-Fiction, Horrorfilm, Film noir oder animierte Stile wie Cartoon.
- Kamerapositionierung und ‑bewegung: [Optional] Steuern Sie die Position und Bewegung der Kamera mit Begriffen wie Luftaufnahme, Augenhöhe, Aufnahme von oben, Kamerafahrt oder Froschperspektive.
- Komposition: [Optional] Wie die Aufnahme gerahmt ist, z. B. Weitwinkelaufnahme, Nahaufnahme, Einzelaufnahme oder Zweieraufnahme.
- Fokus- und Objektiveffekte: [Optional] Verwenden Sie Begriffe wie geringe Schärfentiefe, große Schärfentiefe, Weichzeichner, Makroobjektiv und Weitwinkelobjektiv, um bestimmte visuelle Effekte zu erzielen.
- Atmosphäre: [Optional] Wie Farbe und Licht zur Szene beitragen, z. B. Blautöne, Nacht oder warme Töne.
Weitere Tipps zum Verfassen von Prompts
- Beschreibende Sprache verwenden: Verwenden Sie Adjektive und Adverbien, um Veo ein klares Bild zu vermitteln.
- Gesichtsdetails optimieren: Geben Sie Gesichtsdetails als Fokus des Fotos an, z. B. indem Sie das Wort Porträt im Prompt verwenden.
Umfassendere Strategien für das Erstellen von Prompts finden Sie unter Einführung in das Prompt-Design.
Aufforderung für Audio
Mit Veo 3 können Sie Hinweise für Soundeffekte, Umgebungsgeräusche und Dialoge geben. Das Modell erfasst die Nuancen dieser Hinweise, um einen synchronisierten Soundtrack zu generieren.
- Dialog:Verwenden Sie Anführungszeichen für bestimmte Äußerungen. (Beispiel: „Das muss der Schlüssel sein“, murmelte er.)
- Soundeffekte (SFX): Beschreibe Sounds explizit. Beispiel: Reifen quietschen laut, Motor dröhnt.
- Umgebungslärm:Beschreiben Sie die Geräuschkulisse der Umgebung. Beispiel: Im Hintergrund ist ein leises, unheimliches Summen zu hören.
In diesen Videos wird gezeigt, wie die Audioerstellung von Veo 3 mit immer mehr Details angeleitet wird.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Mehr Details (Dialog und Ambiente) Eine Weitwinkelaufnahme eines nebligen Waldes im pazifischen Nordwesten. Zwei erschöpfte Wanderer, ein Mann und eine Frau, kämpfen sich durch Farne, als der Mann abrupt stehen bleibt und auf einen Baum starrt. Nahaufnahme: Frische, tiefe Krallenspuren sind in die Rinde des Baumes geritzt. Mann: (Hand auf seinem Jagdmesser) „Das ist kein gewöhnlicher Bär.“ Frau: (Stimme angespannt vor Angst, blickt in den Wald) „Was ist es dann?“ Eine raue Rinde, knisternde Zweige, Schritte auf dem feuchten Boden. Ein einzelner Vogel zwitschert. |
|
| Weniger Details (Dialog) Paper Cut-Out Animation. Neuer Bibliothekar: „Wo bewahren Sie die verbotenen Bücher auf?“ Alter Kurator: „Nein. Sie behalten uns.“ |
|
Probieren Sie diese Prompts selbst aus, um den Audio-Output zu hören. Veo 3 ausprobieren
Prompts mit Referenzbildern
Sie können ein oder mehrere Bilder als Eingabe verwenden, um die generierten Videos zu steuern. Dazu nutzen Sie die Bild-zu-Video-Funktionen von Veo. Veo verwendet das Eingabebild als ersten Frame. Wählen Sie ein Bild aus, das der ersten Szene Ihres Videos am nächsten kommt. Sie können damit Alltagsgegenstände animieren, Zeichnungen und Gemälde zum Leben erwecken und Naturszenen Bewegung und Sound hinzufügen.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Eingabebild (generiert von Nano Banana) Ein hyperrealistisches Makrofoto von winzigen, Miniatur-Surfern, die auf Meereswellen in einem rustikalen Waschbecken aus Stein reiten. Ein Wasserhahn aus Messing läuft und erzeugt so die ewige Brandung. Surreal, skurril, helles natürliches Licht. |
|
| Ausgabe-Video (generiert von Veo 3.1) Ein surreales, filmreifes Makrovideo. Winzige Surfer reiten auf endlosen, sanften Wellen in einem steinernen Waschbecken. Ein laufender Wasserhahn aus Messing erzeugt die endlose Brandung. Die Kamera schwenkt langsam über die skurrile, sonnenbeschienene Szene, während die Miniaturfiguren gekonnt durch das türkisfarbene Wasser gleiten. |
|
Mit Veo 3.1 können Sie auf Bilder oder Zutaten verweisen, um die Inhalte des generierten Videos zu steuern. Stellen Sie bis zu drei Asset-Bilder einer einzelnen Person, einer Figur oder eines Produkts bereit. Veo behält das Erscheinungsbild des Motivs im Ausgabevideo bei.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Referenzbild (generiert von Nano Banana) Ein Tiefsee-Anglerfisch lauert im tiefen, dunklen Wasser. Er hat die Zähne gefletscht und sein Köder leuchtet. |
|
| Referenzbild (generiert von Nano Banana) Ein rosa Prinzessinnenkostüm für Kinder mit Zauberstab und Tiara auf einem schlichten Produktbildhintergrund. |
|
| Ausgabe-Video (generiert von Veo 3.1) Erstelle eine alberne Cartoonversion des Fisches, der das Kostüm trägt, schwimmt und mit dem Zauberstab herumfuchtelt. |
|
Mit Veo 3.1 können Sie auch Videos generieren, indem Sie das erste und das letzte Frame des Videos angeben.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Erstes Bild (generiert von Nano Banana) Ein hochwertiges fotorealistisches Frontbild einer roten Katze, die ein rotes Cabriolet auf der Küstenstraße der Côte d’Azur fährt. |
|
| Letztes Bild (generiert von Nano Banana) Zeige, was passiert, wenn das Auto von einer Klippe abhebt. |
|
| Ausgabevideo (von Veo 3.1 generiert) Optional |
|
Mit dieser Funktion können Sie die Komposition Ihres Shots genau steuern, indem Sie den Start- und Endframe festlegen. Laden Sie ein Bild hoch oder verwenden Sie einen Frame aus einem früheren Video, um sicherzustellen, dass Ihre Szene genau so beginnt und endet, wie Sie es sich vorstellen.
Prompts für die Erweiterung
Wenn Sie ein mit Veo generiertes Video mit Veo 3.1 verlängern möchten, verwenden Sie das Video als Eingabe zusammen mit einem optionalen Text-Prompt. Mit „Verlängern“ werden die letzten ein bis zwei Sekunden oder 24 Frames deines Videos fertiggestellt und die Action wird fortgesetzt.
Wenn die Stimme nicht in der letzten Sekunde des Videos zu hören ist, kann sie nicht effektiv verlängert werden.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Eingabevideo (generiert von Veo 3.1) Der Gleitschirmflieger startet vom Gipfel des Berges und gleitet die Hänge hinunter, die auf die blumenbedeckten Täler blicken. |
|
| Ausgabevideo (generiert von Veo 3.1) Erstelle eine längere Version dieses Videos, in der der Gleitschirmflieger langsam landet. |
|
Beispiel-Prompts und -Ausgabe
In diesem Abschnitt werden mehrere Prompts vorgestellt, die zeigen, wie beschreibende Details das Ergebnis jedes Videos verbessern können.
Eiszapfen
In diesem Video wird gezeigt, wie Sie die Elemente der Grundlagen zum Verfassen von Prompts in Ihrem Prompt verwenden können.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Nahaufnahme (Komposition) von schmelzenden Eiszapfen (Motiv) an einer gefrorenen Felswand (Kontext) mit kühlen Blautönen (Atmosphäre), herangezoomt (Kamerabewegung), wobei die Nahaufnahmedetails von Wassertropfen (Aktion) erhalten bleiben. |
|
Mann am Telefon
In diesen Videos wird gezeigt, wie Sie Ihren Prompt mit immer spezifischeren Details überarbeiten können, damit Veo die Ausgabe nach Ihren Wünschen anpasst.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Weniger Details Die Kamera fährt heran, um eine Nahaufnahme eines verzweifelten Mannes in einem grünen Trenchcoat zu zeigen. Er telefoniert mit einem Wandtelefon mit Wählscheibe und einer grünen Neonleuchte. Es sieht aus wie eine Filmszene. |
|
| Mehr Details Eine filmische Nahaufnahme zeigt einen verzweifelten Mann in einem abgewetzten grünen Trenchcoat, der an einem Wählscheibentelefon wählt, das an einer schmutzigen Backsteinmauer angebracht ist. Die Szene ist in das unheimliche Licht einer grünen Leuchtreklame getaucht. Die Kamera fährt näher heran und zeigt die Anspannung in seinem Kiefer und die Verzweiflung in seinem Gesicht, während er versucht, den Anruf zu tätigen. Die geringe Tiefenschärfe konzentriert sich auf seine gerunzelte Stirn und das schwarze Wählscheibentelefon. Der Hintergrund verschwimmt zu einem Meer aus Neonfarben und undeutlichen Schatten, was ein Gefühl der Dringlichkeit und Isolation erzeugt. |
|
Schneeleopard
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Einfacher Prompt Eine niedliche Kreatur mit Fell wie ein Schneeleopard geht in einem Winterwald, 3D‑Cartoonstil. |
|
| Detaillierter Prompt: Erstelle eine kurze 3D-Animationsszene in einem fröhlichen Cartoonstil. Eine niedliche Kreatur mit schneeleopardenähnlichem Fell, großen ausdrucksstarken Augen und einer freundlichen, runden Form hüpft fröhlich durch einen skurrilen Winterwald. Die Szene sollte runde, schneebedeckte Bäume, sanft fallende Schneeflocken und warmes Sonnenlicht zeigen, das durch die Äste fällt. Die hüpfenden Bewegungen und das breite Lächeln der Kreatur sollen pure Freude vermitteln. Der Ton sollte optimistisch und herzlich sein. Die Farben sollten hell und fröhlich sein und die Animationen verspielt. |
|
Beispiele nach Textelementen
In diesen Beispielen sehen Sie, wie Sie Ihre Prompts anhand der einzelnen grundlegenden Elemente optimieren können.
Thema und Kontext
Geben Sie den Hauptfokus (Motiv) und den Hintergrund oder die Umgebung (Kontext) an.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Eine architektonische Darstellung eines weißen Beton-Apartmentgebäudes mit fließenden organischen Formen, das nahtlos in üppiges Grün und futuristische Elemente übergeht |
|
| Ein Satellit, der durch das Weltall schwebt, mit dem Mond und einigen Sternen im Hintergrund. |
|
Aktion
Geben Sie an, was das Motiv tut (z.B. gehen, laufen oder den Kopf drehen).
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Eine Weitwinkelaufnahme einer Frau, die am Strand entlanggeht und bei Sonnenuntergang zufrieden und entspannt auf den Horizont blickt. |
|
Stil
Fügen Sie Keywords hinzu, um die Generierung in eine bestimmte Richtung zu lenken (z.B. surreal, Vintage, futuristisch, Film noir).
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Film-noir-Stil, Mann und Frau gehen auf der Straße, Mystery, cinematisch, schwarz-weiß. |
|
Kamerabewegung und Bildkomposition
Gib an, wie sich die Kamera bewegen soll (Subjektive, Luftaufnahme, Drohnenaufnahme mit Nachverfolgungsfunktion) und wie die Aufnahme gerahmt werden soll (Weitwinkelaufnahme, Nahaufnahme, Froschperspektive).
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Eine POV-Aufnahme aus einem Oldtimer, der nachts im Regen in Kanada fährt, filmisch. |
|
| Extreme Nahaufnahme eines Auges, in dem sich eine Stadt spiegelt. |
|
Ambiente
Farbpaletten und Beleuchtung beeinflussen die Stimmung. Verwenden Sie Begriffe wie „gedämpftes Orange, warme Farbtöne“, „natürliches Licht“, „Sonnenaufgang“ oder „kühle Blautöne“.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Nahaufnahme eines Mädchens, das einen niedlichen Golden Retriever-Welpen im Park hält, Sonnenlicht. |
|
| Kinoreife Nahaufnahme einer traurigen Frau, die im Regen mit dem Bus fährt, kühle Blautöne, traurige Stimmung. |
|
Negative Prompts
Mit negativen Prompts geben Sie Elemente an, die nicht im Video enthalten sein sollen.
- ❌ Verwenden Sie keine Formulierungen wie keine oder nicht. (z. B. mit der „Keine Wände“).
- ✅ Beschreiben Sie, was Sie nicht sehen möchten. (z. B. mit der „Wand, Rahmen“).
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Ohne negativen Prompt Erstelle eine kurze, stilisierte Animation einer großen, einsamen Eiche, deren Blätter im starken Wind wehen… [gekürzt] |
|
| Mit negativem Prompt: [Same prompt] Negativer Prompt: urban background, man-made structures, dark, stormy, or threatening atmosphere. |
|
Seitenverhältnisse
Mit Veo können Sie das Seitenverhältnis für Ihr Video festlegen.
| Eingabeaufforderung | Generierte Ausgabe |
|---|---|
| Widescreen (16:9) Erstelle ein Video mit einer Drohnenaufnahme eines Mannes, der in den 1970er-Jahren in Palm Springs in einem roten Cabrio fährt. Warmes Sonnenlicht, lange Schatten. |
|
| Hochformat (9:16) Erstelle ein Video, das die flüssige Bewegung eines majestätischen hawaiianischen Wasserfalls in einem üppigen Regenwald zeigt. Konzentriere dich auf einen realistischen Wasserfluss, detailliertes Laub und natürliche Beleuchtung, um Ruhe zu vermitteln. Halten Sie das rauschende Wasser, die neblige Atmosphäre und das gefleckte Sonnenlicht fest, das durch das dichte Blätterdach fällt. Verwende sanfte, filmreife Kamerabewegungen, um den Wasserfall und seine Umgebung zu präsentieren. Der Ton sollte ruhig und realistisch sein und den Zuschauer in die friedliche Schönheit des hawaiianischen Regenwalds entführen. |
|
Beschränkungen
- Anfragelatenz:Min.: 11 Sekunden; Max.: 6 Minuten (während der Stoßzeiten).
- Regionale Einschränkungen:In der EU, im Vereinigten Königreich, in der Schweiz und in der MENA-Region sind für
personGenerationdie folgenden Werte zulässig:- Veo 3: Nur
allow_adult. - Veo 2:
dont_allowundallow_adult. Der Standardwert istdont_allow.
- Veo 3: Nur
- Videoaufbewahrung:Generierte Videos werden 2 Tage lang auf dem Server gespeichert und dann entfernt. Wenn du eine lokale Kopie speichern möchtest, musst du dein Video innerhalb von zwei Tagen nach der Erstellung herunterladen. Verlängerte Videos werden als neu generierte Videos behandelt.
- Wasserzeichen:Mit Veo erstellte Videos werden mit SynthID mit Wasserzeichen versehen. SynthID ist unser Tool zum Kennzeichnen und Identifizieren von KI-generierten Inhalten. Videos können über die SynthID-Bestätigungsplattform überprüft werden.
- Sicherheit:Generierte Videos werden durch Sicherheitsfilter und Prozesse zur Überprüfung der Speicherung geleitet, um Risiken in Bezug auf Datenschutz, Urheberrecht und Voreingenommenheit zu minimieren.
- Audiofehler:Manchmal wird die Generierung eines Videos durch Veo 3.1 aufgrund von Sicherheitsfiltern oder anderen Verarbeitungsproblemen mit dem Audio blockiert. Wenn die Erstellung Ihres Videos blockiert wird, fallen keine Kosten an.
Modellmerkmale
| Funktion | Beschreibung | Veo 3.1 und Veo 3.1 Fast | Veo 3 und Veo 3 Fast | Veo 2 |
|---|---|---|---|---|
| Audio | Audio wird nativ mit Video generiert. | Audio wird nativ mit Video generiert. | ✔️ Immer aktiv | ❌ Nur stumm |
| Eingabemodalitäten | Der für die Generierung verwendete Eingabetyp. | Video aus Text, Video aus Bild, Video aus Video | Video aus Text, Video aus Bild | Video aus Text, Video aus Bild |
| Lösung | Die Ausgabeauflösung des Videos. | 720p, 1080p (nur 8 Sekunden lang), 4K (nur 8 Sekunden lang) 720p nur bei Verwendung einer Video-Extension. |
720p und 1080p (nur 16:9) | 720p |
| Framerate | Die Ausgabeframerate des Videos. | 24 fps | 24 fps | 24 fps |
| Videodauer | Länge des generierten Videos. | 8 Sekunden, 6 Sekunden, 4 Sekunden 8 Sekunden nur bei 1080p oder 4K oder bei Verwendung von Referenzbildern |
8 Sekunden | 5–8 Sekunden |
| Videos pro Anfrage | Anzahl der Videos, die pro Anfrage generiert werden. | 1 | 1 | 1 oder 2 |
| Status und Details | Modellverfügbarkeit und weitere Details | Vorschau | Stabil | Stabil |
Modellversionen
Weitere Informationen zur Nutzung des Veo-Modells finden Sie auf den Seiten Preise und Ratenbeschränkungen.
Mit den Veo Fast-Versionen können Entwickler Videos mit Ton erstellen, die eine hohe Qualität aufweisen und für Schnelligkeit und geschäftliche Anwendungsfälle optimiert sind. Sie eignen sich ideal für Backend-Dienste, mit denen programmatisch Anzeigen generiert werden, für Tools zum schnellen A/B-Testen von kreativen Konzepten oder für Apps, mit denen schnell Inhalte für soziale Medien erstellt werden müssen.
Veo 3.1 – Vorabversion
| Attribut | Beschreibung |
|---|---|
| Modellcode |
Gemini API
|
| Unterstützte Datentypen |
Eingabe Text, Bild Ausgabe Video mit Audio |
| -Limits |
Texteingabe 1.024 Tokens Ausgabe-Video 1 |
| Letzte Aktualisierung | Januar 2026 |
Veo 3.1 Fast (Vorabversion)
| Attribut | Beschreibung |
|---|---|
| Modellcode |
Gemini API
|
| Unterstützte Datentypen |
Eingabe Text, Bild Ausgabe Video mit Audio |
| -Limits |
Texteingabe 1.024 Tokens Ausgabe-Video 1 |
| Letzte Aktualisierung | September 2025 |
Veo 2
| Attribut | Beschreibung |
|---|---|
| Modellcode |
Gemini API
|
| Unterstützte Datentypen |
Eingabe Text, Bild Ausgabe Video |
| -Limits |
Texteingabe – Bildeingabe Beliebige Bildauflösung und beliebiges Seitenverhältnis bis zu einer Dateigröße von 20 MB Ausgabe-Video Bis zu 2 |
| Letzte Aktualisierung | April 2025 |
Nächste Schritte
- Erste Schritte mit der Veo 3.1 API: Veo-Schnellstart-Colab und Veo 3.1-Applet ausprobieren.
- Einführung in das Prompt-Design