Generowanie filmów za pomocą Veo 3.1 w interfejsie Gemini API

Veo 3.1 to najnowocześniejszy model Google do generowania 8-sekundowych filmów w rozdzielczości 720p lub 1080p o wysokiej jakości, które charakteryzują się niesamowitym realizmem i zawierają wygenerowany dźwięk. Dostęp do tego modelu możesz uzyskać w sposób zautomatyzowany za pomocą interfejsu Gemini API. Więcej informacji o dostępnych wariantach modelu Veo znajdziesz w sekcji Wersje modelu.

Veo 3.1 doskonale radzi sobie z różnymi stylami wizualnymi i filmowymi oraz wprowadza kilka nowych funkcji:

  • Rozszerzenie wideo: rozszerzaj filmy, które zostały wcześniej wygenerowane za pomocą Veo.
  • Generowanie konkretnych klatek: wygeneruj film, podając pierwszą i ostatnią klatkę.
  • Kierowanie na podstawie obrazu: użyj maksymalnie 3 obrazów referencyjnych, aby określić zawartość wygenerowanego filmu.

Więcej informacji o pisaniu skutecznych promptów tekstowych do generowania filmów znajdziesz w przewodniku po promptach Veo.

Generowanie filmu na podstawie tekstu

Wybierz przykład, aby dowiedzieć się, jak wygenerować film z dialogami, kinowym realizmem lub kreatywną animacją:

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`);

Przeczytaj

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)
}

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

Generowanie filmu na podstawie obrazu

Poniższy kod pokazuje, jak wygenerować obraz za pomocą Gemini 2.5 Flash Image, czyli Nano Banana, a następnie użyć go jako klatki początkowej do wygenerowania filmu za pomocą Veo 3.1.

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",
    prompt=prompt,
)

# 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.generated_images[0].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`);

Przeczytaj

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)
}

Korzystanie z obrazów referencyjnych

Veo 3.1 akceptuje teraz maksymalnie 3 obrazy referencyjne, które pomagają określać zawartość wygenerowanego filmu. Prześlij zdjęcia osoby, postaci lub produktu, aby zachować wygląd obiektu w filmie wyjściowym.

Na przykład użycie tych 3 obrazów wygenerowanych za pomocą Nano Banana jako odniesień z dobrze napisanym promptem spowoduje utworzenie tego filmu:

`dress_image` `woman_image` `glasses_image`
Sukienka w stylu haute couture z motywem flaminga, z warstwami różowych i fuksjowych piór Piękna kobieta z ciemnymi włosami i ciepłymi brązowymi oczami Fantazyjne różowe okulary przeciwsłoneczne w kształcie serca

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")

Używanie pierwszej i ostatniej klatki

Veo 3.1 umożliwia tworzenie filmów za pomocą interpolacji lub określania pierwszej i ostatniej klatki filmu. Informacje o pisaniu skutecznych promptów tekstowych do generowania filmów znajdziesz w przewodniku po promptach Veo.

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, # Generated separately with Nano Banana
    config=types.GenerateVideosConfig(
      last_frame=last_image # Generated separately with Nano Banana
    ),
)

# 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")
`first_image` `last_image` veo3.1_with_interpolation.mp4
Upiorna kobieta z długimi białymi włosami i powiewającą sukienką delikatnie kołysze się na huśtawce linowej. Duch kobiety znika z huśtawki Film w stylu kinowym, przedstawiający upiorną kobietę znikającą z huśtawki we mgle.

Wydłużanie filmów wygenerowanych przez Veo

Używaj Veo 3.1, aby wydłużać filmy wygenerowane wcześniej za pomocą Veo o 7 sekund i nawet 20 razy.

Ograniczenia dotyczące filmu wejściowego:

  • Filmy wygenerowane przez Veo mogą trwać maksymalnie 141 sekund.
  • Interfejs Gemini API obsługuje rozszerzenia wideo tylko w przypadku filmów wygenerowanych przez Veo.
  • Filmy wejściowe powinny mieć określoną długość, format obrazu i wymiary:
    • Format obrazu: 9:16 lub 16:9
    • Rozdzielczość: 720p
    • Długość filmu: maksymalnie 141 sekund

Wynikiem działania rozszerzenia jest jeden film łączący film przesłany przez użytkownika z wygenerowanym rozszerzonym filmem, który może trwać do 148 sekund.

W tym przykładzie wykorzystujemy wygenerowany przez Veo film butterfly_video, który jest tu pokazany z pierwotnym promptem, i rozszerzamy go za pomocą parametru video oraz nowego prompta:

Prompt Wyjście: butterfly_video
Motyl origami macha skrzydłami i wylatuje przez drzwi balkonowe do ogrodu. Motyl origami macha skrzydłami i wylatuje przez drzwi balkonowe do ogrodu.

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=butterfly_video,
    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")

Informacje o pisaniu skutecznych promptów tekstowych do generowania filmów znajdziesz w przewodniku po promptach Veo.

Obsługa operacji asynchronicznych

Generowanie filmów jest zadaniem wymagającym dużej mocy obliczeniowej. Gdy wyślesz żądanie do interfejsu API, rozpocznie on długotrwałe zadanie i natychmiast zwróci obiekt operation. Następnie musisz wysyłać zapytania, dopóki film nie będzie gotowy. Wskazuje na to stan done.

Podstawą tego procesu jest pętla sondowania, która okresowo sprawdza stan zadania.

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 ...

Parametry i specyfikacje interfejsu Veo API

Są to parametry, które możesz ustawić w żądaniu interfejsu API, aby kontrolować proces generowania filmu.

Parametr Opis Veo 3.1 i Veo 3.1 Fast Veo 3 i Veo 3 Fast Veo 2
prompt Tekstowy opis filmu. Obsługuje wskazówki audio. string string string
negativePrompt Tekst opisujący, czego nie należy umieszczać w filmie. string string string
image Obraz początkowy do animacji. Image obiekt Image obiekt Image obiekt
lastFrame Obraz końcowy, do którego ma przejść film interpolacyjny. Musi być używany w połączeniu z parametrem image. Image obiekt Image obiekt Image obiekt
referenceImages Maksymalnie 3 obrazy, które będą używane jako odniesienia do stylu i treści. Obiekt VideoGenerationReferenceImage (tylko Veo 3.1) nie dotyczy nie dotyczy
video Film, który ma być używany w rozszerzeniu z filmem. Video obiekt nie dotyczy nie dotyczy
aspectRatio Format obrazu filmu. "16:9" (domyślna, 720p i 1080p),
"9:16"(720p i 1080p)

"16:9" (domyślnie, 720p i 1080p),
"9:16" (720p i 1080p)
"16:9" (domyślna, 720p),
"9:16" (720p)
resolution Format obrazu filmu. "720p" (domyślnie),
"1080p" (obsługuje tylko czas trwania 8 s)

"720p" tylko w przypadku rozszerzenia
"720p" (domyślnie),
"1080p" (tylko 16:9)
Nieobsługiwany
durationSeconds Długość wygenerowanego filmu. "4", "6", "8".

 Musi mieć wartość „8”, gdy używasz rozszerzenia lub interpolacji (obsługuje formaty 16:9 i 9:16) oraz gdy używasz referenceImages (obsługuje tylko format 16:9).
"4", "6", "8" "5", "6", "8"
personGeneration Określa generowanie osób.
(Ograniczenia regionalne znajdziesz w sekcji Ograniczenia)
Zamiana tekstu na film i rozszerzenie:
"allow_all" tylko
Zamiana obrazu na film, interpolacja i obrazy referencyjne:
"allow_adult" tylko
Tekst na film:
"allow_all" tylko
Obraz na film:
"allow_adult" tylko
Tekst na film:
"allow_all", "allow_adult", "dont_allow"
Obraz na film:
"allow_adult" i "dont_allow"

Pamiętaj, że parametr seed jest też dostępny w przypadku modeli Veo 3. Nie gwarantuje to determinizmu, ale nieco go poprawia.

Możesz dostosować generowanie filmów, ustawiając parametry w prośbie. Możesz na przykład użyć symbolu negativePrompt, aby naprowadzić model.

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`);

Przeczytaj

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

Przewodnik po promptach w Veo

W tej sekcji znajdziesz przykłady filmów, które możesz utworzyć za pomocą Veo, oraz dowiesz się, jak modyfikować prompty, aby uzyskać różne wyniki.

Filtry bezpieczeństwa

Veo stosuje w Gemini filtry bezpieczeństwa, aby mieć pewność, że wygenerowane filmy i przesłane zdjęcia nie zawierają obraźliwych treści. Prompty, które naruszają nasze warunki i wytyczne, są blokowane.

Podstawowe informacje o pisaniu promptów

Dobre prompty są opisowe i jasne. Aby w pełni wykorzystać możliwości Veo, zacznij od określenia głównego pomysłu, dopracuj go, dodając słowa kluczowe i modyfikatory, a także uwzględnij w promptach terminologię związaną z wideo.

W prompcie powinny się znaleźć te elementy:

  • Temat: obiekt, osoba, zwierzę lub sceneria, które chcesz umieścić w filmie, np. pejzaż miejski, przyroda, pojazdy lub szczenięta.
  • Działanie: co robi osoba (np. idzie, biegnie lub obraca głowę).
  • Styl: określ kierunek kreatywny za pomocą słów kluczowych dotyczących konkretnego stylu filmu, np. science fiction, horror, film noir lub stylów animowanych, takich jak kreskówka.
  • Położenie i ruch kamery: [opcjonalnie] steruj położeniem i ruchem kamery za pomocą określeń takich jak widok z lotu ptaka, na poziomie oczu, zdjęcie z góry, zdjęcie z ruchu lub z perspektywy żabiej.
  • Kompozycja: [opcjonalnie] sposób kadrowania ujęcia, np. szerokie ujęcie, zbliżenie, jedno ujęcie lub dwa ujęcia.
  • Efekty ostrości i obiektywu: [opcjonalnie] użyj terminów takich jak płytka ostrość, głęboka ostrość, miękka ostrość, obiektyw makro i obiektyw szerokokątny, aby uzyskać określone efekty wizualne.
  • Ambiance: [Opcjonalnie] Jak kolor i światło wpływają na scenę, np. niebieskie odcienie, noc lub ciepłe odcienie.

Więcej wskazówek dotyczących pisania promptów

  • Używaj opisowego języka: używaj przymiotników i przysłówków, aby dokładnie opisać, co chcesz uzyskać.
  • Uwydatnij szczegóły twarzy: określ szczegóły twarzy jako główny element zdjęcia, np. używając w prompcie słowa portret.

Bardziej szczegółowe strategie tworzenia promptów znajdziesz w artykule Wprowadzenie do projektowania promptów.

Prośba o dźwięk

Za pomocą Veo 3 możesz podać wskazówki dotyczące efektów dźwiękowych, szumu otoczenia i dialogów. Model wychwytuje niuanse tych wskazówek, aby wygenerować zsynchronizowaną ścieżkę dźwiękową.

  • Dialog: używaj cudzysłowów, aby oznaczyć konkretne wypowiedzi. (Przykład: „To musi być klucz” – mruknął).
  • Efekty dźwiękowe: dokładnie opisz dźwięki. (Przykład: opony głośno piszczą, silnik ryczy).
  • Szum otoczenia: opisz dźwięki otoczenia. (Przykład: W tle słychać cichy, upiorny szum).

Te filmy pokazują, jak za pomocą promptów generować dźwięk w Veo 3 z coraz większą ilością szczegółów.

Prompt Wygenerowane dane wyjściowe
Więcej szczegółów (dialogi i otoczenie)
Szerokie ujęcie zamglonego lasu w północno-zachodniej części Stanów Zjednoczonych. Dwoje wyczerpanych wędrowców, mężczyzna i kobieta, przedzierają się przez paprocie. Mężczyzna nagle się zatrzymuje i wpatruje się w drzewo. Zbliżenie: na korze drzewa widoczne są świeże, głębokie ślady pazurów. Mężczyzna: (kładzie rękę na nożu myśliwskim) „To nie jest zwykły niedźwiedź”. Kobieta: (głos drży ze strachu, rozgląda się po lesie) „To co to jest?” Szorstka kora, łamiące się gałązki, kroki na wilgotnej ziemi. Ćwierka samotny ptak.
Dwie osoby w lesie natrafiają na ślady niedźwiedzia.
Mniej szczegółów (dialog)
Animacja wycinankowa. Nowy bibliotekarz: „Gdzie trzymacie zakazane książki?” Stary kurator: „Nie. Oni nas zatrzymają”.
Animowane bibliotekarki rozmawiające o zakazanych książkach

Wypróbuj te prompty, aby usłyszeć dźwięk. Wypróbuj Veo 3

Promptowanie z użyciem obrazów referencyjnych

Możesz użyć co najmniej 1 obrazu jako danych wejściowych, aby kierować generowanymi filmami, korzystając z funkcji obrazu do filmu w Veo. Veo używa obrazu wejściowego jako klatki początkowej. Wybierz obraz, który najbardziej przypomina pierwszą scenę filmu, aby animować przedmioty codziennego użytku, ożywiać rysunki i obrazy oraz dodawać ruch i dźwięk do scen przyrodniczych.

Prompt Wygenerowane dane wyjściowe
Obraz wejściowy (wygenerowany przez Nano Banana)
Hiperrealistyczne zdjęcie makro przedstawiające miniaturowych surferów pływających na falach oceanu w rustykalnej kamiennej umywalce w łazience. Z mosiężnego kranu w stylu vintage leje się woda, tworząc nieustanną falę. Surrealistyczne, fantazyjne, jasne naturalne oświetlenie.
Malutcy surferzy na falach oceanu w rustykalnej kamiennej umywalce.
Film wygenerowany przez Veo 3.1
Surrealistyczny, kinowy film makro. Malutcy surferzy pływają na nieustannie pojawiających się falach w kamiennej umywalce. Nieustannie płynąca woda z mosiężnego kranu w stylu vintage tworzy niekończące się fale. Kamera powoli przesuwa się po fantazyjnej, oświetlonej słońcem scenie, a miniaturowe figurki sprawnie rzeźbią turkusową wodę.
Małe figurki surferów krążące po falach w umywalce.

Veo 3.1 umożliwia odwoływanie się do obrazów lub składników w celu kierowania treścią generowanego filmu. Prześlij maksymalnie 3 obrazy pojedynczej osoby, postaci lub produktu. Veo zachowuje wygląd obiektu w filmie wyjściowym.

Prompt Wygenerowane dane wyjściowe
Obraz referencyjny (wygenerowany przez Nano Banana)
Żabnica głębinowa czai się w głębokiej, ciemnej wodzie, pokazując zęby i świecącą przynętę.
Ciemna, świecąca ryba żabnica
Obraz referencyjny (wygenerowany przez Nano Banana)
Różowy kostium księżniczki dla dziecka z różdżką i tiarą na jednolitym tle produktu.
Różowy kostium księżniczki dla dziecka
Film wyjściowy (wygenerowany przez Veo 3.1)
Utwórz zabawną kreskówkową wersję ryby w kostiumie, która pływa i machając różdżką.
Żabnica w przebraniu księżniczki

Za pomocą Veo 3.1 możesz też generować filmy, określając pierwszą i ostatnią klatkę filmu.

Prompt Wygenerowane dane wyjściowe
Pierwszy obraz (wygenerowany przez Nano Banana)
Fotorealistyczny obraz wysokiej jakości przedstawiający z przodu rudego kota prowadzącego czerwony kabriolet na francuskiej riwierze.
Rudy kot prowadzący czerwony kabriolet wyścigowy
Ostatni obraz (wygenerowany przez Nano Banana)
Pokaż, co się stanie, gdy samochód zjedzie z klifu.
Rudy kot jadący czerwonym kabrioletem spada z klifu
Film wyjściowy (wygenerowany przez Veo 3.1)
Opcjonalnie
Kot zjeżdża z klifu i odlatuje

Ta funkcja zapewnia precyzyjną kontrolę nad kompozycją ujęcia, ponieważ pozwala określić klatkę początkową i końcową. Prześlij obraz lub użyj klatki z wcześniej wygenerowanego filmu, aby mieć pewność, że scena zaczyna się i kończy dokładnie tak, jak chcesz.

Promptowanie rozszerzenia

Aby przedłużyć film wygenerowany w Veo za pomocą Veo 3.1, użyj go jako danych wejściowych wraz z opcjonalnym promptem tekstowym. Wydłużenie kończy ostatnią sekundę lub 24 klatki filmu i pozwala scenie rozwijać się naturalnie, bez przerywania akcji.

Pamiętaj, że nie można skutecznie przedłużyć głosu, jeśli nie występuje on w ostatniej sekundzie filmu.

Prompt Wygenerowane dane wyjściowe
Film wejściowy (wygenerowany przez Veo 3.1)
Paralotniarz startuje ze szczytu góry i zaczyna szybować w dół, nad dolinami pokrytymi kwiatami.
Paralotniarz startujący ze szczytu góry
Film wyjściowy (wygenerowany przez Veo 3.1)
Przedłuż ten film, dodając scenę, w której paralotniarz powoli opada.
Paralotniarz startuje ze szczytu góry, a potem powoli opada.

Przykładowe prompty i dane wyjściowe

W tej sekcji znajdziesz kilka promptów, które pokazują, jak szczegółowe opisy mogą poprawić efekt każdego filmu.

Sople

Z tego filmu dowiesz się, jak w prompcie wykorzystać elementy podstaw pisania promptów.

Prompt Wygenerowane dane wyjściowe
Zbliżenie (kompozycja) topniejących sopli (obiekt) na zamarzniętej (kontekst) skalnej ścianie (kontekst) w chłodnych, niebieskich odcieniach (atmosfera), z przybliżeniem (ruch kamery) zachowującym szczegóły kropel wody (działanie). Kapiące sople lodu na niebieskim tle.

Mężczyzna rozmawia przez telefon

Te filmy pokazują, jak możesz poprawiać prompt, dodając coraz bardziej szczegółowe informacje, aby Veo dostosował wygenerowany film do Twoich potrzeb.

Prompt Wygenerowane dane wyjściowe
Mniej szczegółów
Kamera przesuwa się, aby pokazać zbliżenie na zdesperowanego mężczyznę w zielonym prochowcu. Dzwoni z telefonu ściennego z tarczą, który jest oświetlony zielonym neonem. Wygląda jak scena z filmu.
Mężczyzna rozmawia przez telefon.
Więcej szczegółów
Zbliżenie w stylu filmowym przedstawia zdesperowanego mężczyznę w spranym zielonym prochowcu, który wybiera numer na telefonie z tarczą zamontowanym na szorstkiej ceglanej ścianie, oświetlonej upiornym blaskiem zielonego neonu. Kamera zbliża się do niego, ukazując napięcie w jego szczęce i rozpacz na twarzy, gdy próbuje wykonać połączenie. Płytka głębia ostrości skupia się na jego zmarszczonym czole i czarnym telefonie obrotowym, rozmywając tło w morze neonowych kolorów i niewyraźnych cieni, co tworzy poczucie pilności i izolacji.
Mężczyzna rozmawia przez telefon

Irbis śnieżny

Prompt Wygenerowane dane wyjściowe
Prosty prompt:
Urocze stworzenie z futrem podobnym do futra irbisa śnieżnego idzie przez zimowy las, render w stylu kreskówki 3D.
Irbis śnieżny jest ospały.
Szczegółowy prompt:
Utwórz krótką scenę animowaną 3D w radosnym stylu kreskówkowym. Urocze stworzenie z futrem podobnym do futra pantery śnieżnej, dużymi, wyrazistymi oczami i przyjazną, zaokrągloną sylwetką radośnie kroczy przez fantastyczny zimowy las. Scena powinna przedstawiać zaokrąglone, pokryte śniegiem drzewa, delikatnie padające płatki śniegu i ciepłe światło słoneczne przebijające się przez gałęzie. Skoczne ruchy i szeroki uśmiech stworzenia powinny wyrażać czystą radość. Postaw na optymistyczny, ciepły ton, jasne, wesołe kolory i zabawne animacje.
Irbis śnieżny biegnie szybciej.

Przykłady według elementów tekstu

Te przykłady pokazują, jak doprecyzować prompty za pomocą poszczególnych elementów podstawowych.

Temat i kontekst

Określ główny obiekt (temat) oraz tło lub otoczenie (kontekst).

Prompt Wygenerowane dane wyjściowe
Render architektoniczny białego betonowego budynku mieszkalnego o płynnych, organicznych kształtach, płynnie łączącego się z bujną zielenią i futurystycznymi elementami. Obiekt zastępczy.
Satelita unoszący się w kosmosie z księżycem i gwiazdami w tle. Satelita unoszący się w atmosferze.

Działanie

Określ, co robi osoba (np. chodzi, biegnie lub obraca głowę).

Prompt Wygenerowane dane wyjściowe
Szeroki kadr przedstawiający kobietę spacerującą po plaży. Jest zadowolona i zrelaksowana, patrzy w stronę horyzontu o zachodzie słońca. Zachód słońca jest absolutnie piękny.

Styl

Dodaj słowa kluczowe, aby skierować generowanie w stronę określonej estetyki (np. surrealistycznej, vintage, futurystycznej, film noir).

Prompt Wygenerowane dane wyjściowe
Film noir, mężczyzna i kobieta idą ulicą, tajemnica, kinowy, czarno-biały. Styl film noir jest absolutnie piękny.

Ruch kamery i kompozycja

Określ, jak porusza się kamera (ujęcie z perspektywy pierwszej osoby, widok z lotu ptaka, widok z drona śledzącego) i jak jest kadrowane ujęcie (ujęcie szerokie, zbliżenie, ujęcie z dołu).

Prompt Wygenerowane dane wyjściowe
Zdjęcie z perspektywy pierwszej osoby przedstawiające zabytkowy samochód jadący w deszczu w Kanadzie w nocy, w stylu filmowym. Zachód słońca jest absolutnie piękny.
Ekstremalne zbliżenie oka, w którym odbija się miasto. Zachód słońca jest absolutnie piękny.

Atmosfera

Palety kolorów i oświetlenie wpływają na nastrój. Spróbuj użyć terminów takich jak „przygaszony pomarańczowy, ciepłe odcienie”, „naturalne światło”, „wschód słońca” lub „chłodne odcienie niebieskiego”.

Prompt Wygenerowane dane wyjściowe
Zbliżenie na dziewczynkę trzymającą uroczego szczeniaka golden retrievera w parku, w świetle słonecznym. Szczeniak w ramionach dziewczynki.
Filmowe zbliżenie smutnej kobiety jadącej autobusem w deszczu, chłodne niebieskie odcienie, smutny nastrój. Kobieta jadąca autobusem, która jest smutna.

Negatywne prompty

Wykluczone prompty określają elementy, których nie chcesz widzieć w filmie.

  • ❌ Nie używaj języka instruktażowego, np. nie lub nie. (np. „Brak ścian”).
  • ✅ Opisz, czego nie chcesz zobaczyć. (np. „ściana, rama”).
Prompt Wygenerowane dane wyjściowe
Bez negatywnego prompta:
wygeneruj krótką, stylizowaną animację przedstawiającą duże, samotne drzewo dębu, którego liście są gwałtownie poruszane przez silny wiatr… [truncated]
Drzewo z użyciem słów.
Z negatywnym promptem:
[Ten sam prompt]

Negatywny prompt: tło miejskie, struktury stworzone przez człowieka, mroczna, burzowa lub groźna atmosfera.
Drzewo bez wykluczających słów.

Formaty obrazu

Veo umożliwia określenie formatu filmu.

Prompt Wygenerowane dane wyjściowe
Panoramiczny (16:9)
Utwórz film z widokiem z drona śledzącego mężczyznę jadącego czerwonym kabrioletem w Palm Springs w latach 70. XX wieku. Ciepłe światło słoneczne, długie cienie.
Mężczyzna prowadzący czerwony kabriolet w Palm Springs w stylu lat 70.
Orientacja pionowa (9:16)
 Utwórz film przedstawiający płynny ruch majestatycznego hawajskiego wodospadu w bujnym lesie deszczowym. Skup się na realistycznym przepływie wody, szczegółowych liściach i naturalnym oświetleniu, aby przekazać spokój. Uchwyć szumiącą wodę, mglistą atmosferę i plamki światła słonecznego przenikające przez gęste korony drzew. Użyj płynnych, filmowych ruchów kamery, aby pokazać wodospad i jego otoczenie. Postaw na spokojny, realistyczny ton, który przeniesie widza w spokojne piękno hawajskiego lasu deszczowego.
Majestatyczny hawajski wodospad w bujnym lesie deszczowym.

Ograniczenia

  • Czas oczekiwania na żądanie: min. 11 sekund, maks. 6 minut (w godzinach szczytu).
  • Ograniczenia regionalne: w UE, Wielkiej Brytanii, Szwajcarii i regionie MENA dozwolone są te wartości parametru personGeneration:
    • Veo 3: allow_adult.
    • Veo 2: dont_allow i allow_adult. Wartość domyślna to dont_allow.
  • Przechowywanie filmów: wygenerowane filmy są przechowywane na serwerze przez 2 dni, a następnie usuwane. Aby zapisać kopię lokalną, musisz pobrać film w ciągu 2 dni od jego wygenerowania. Rozszerzone filmy są traktowane jako nowo wygenerowane filmy.
  • Znaki wodne: filmy utworzone za pomocą Veo są oznaczane znakiem wodnym przy użyciu SynthID, naszego narzędzia do dodawania znaków wodnych i identyfikowania treści generowanych przez AI. Filmy można weryfikować za pomocą platformy weryfikacyjnej SynthID.
  • Bezpieczeństwo: wygenerowane filmy są sprawdzane przez filtry bezpieczeństwa i procesy weryfikacji zapamiętywania, które pomagają ograniczać ryzyko związane z prywatnością, prawami autorskimi i stronniczością.
  • Błąd dźwięku: Veo 3.1 może czasami zablokować generowanie filmu z powodu filtrów bezpieczeństwa lub innych problemów z przetwarzaniem dźwięku. Jeśli wygenerowanie filmu zostanie zablokowane, nie obciążymy Cię opłatą.

Funkcje modelu

Funkcja Opis Veo 3.1 i Veo 3.1 Fast Veo 3 i Veo 3 Fast Veo 2
Dźwięk Natywnie generuje dźwięk z filmu. Natywnie generuje dźwięk z filmu. ✔️ Zawsze włączone ❌ Tylko cichy
Rodzaje danych wejściowych Typ danych wejściowych użytych do wygenerowania. Tekst na film, obraz na film, film na film Zamiana tekstu na film, zamiana obrazu na film Zamiana tekstu na film, zamiana obrazu na film
Rozdzielczość Rozdzielczość wyjściowa filmu. 720p i 1080p (tylko 8 s)

720p tylko w przypadku korzystania z rozszerzenia z filmem.
720p i 1080p (tylko 16:9) 720p
Liczba klatek Liczba klatek na sekundę wyjściowego filmu. 24 kl./s 24 kl./s 24 kl./s
Czas trwania filmu Długość wygenerowanego filmu. 8 sekund, 6 sekund, 4 sekundy
8 sekund tylko w przypadku używania obrazów referencyjnych
8 sekund 5–8 sekund
Filmy na żądanie Liczba filmów wygenerowanych w ramach jednego żądania. 1 1 1 lub 2
Stan i szczegóły Dostępność modelu i dalsze szczegóły. Podgląd Stabilna Stabilna

Wersje modelu

Więcej informacji o korzystaniu z modeli Veo znajdziesz na stronach CenyLimity żądań.

Veo 3.1 (wersja testowa)

Właściwość Opis
Kod modelu

Gemini API

veo-3.1-generate-preview

Obsługiwane typy danych

Wejście

Tekst, obraz

Dane wyjściowe

Film z dźwiękiem

Limity

Wpisywanie tekstu

1024 tokeny

Film wyjściowy

1

Ostatnia aktualizacja Wrzesień 2025 r.

Veo 3.1 Fast (wersja testowa)

Właściwość Opis
Kod modelu

Gemini API

veo-3.1-fast-generate-preview

Obsługiwane typy danych

Wejście

Tekst, obraz

Dane wyjściowe

Film z dźwiękiem

Limity

Wpisywanie tekstu

1024 tokeny

Film wyjściowy

1

Ostatnia aktualizacja Wrzesień 2025 r.

Veo 3

Właściwość Opis
Kod modelu

Gemini API

veo-3.0-generate-001

Obsługiwane typy danych

Wejście

Tekst, obraz

Dane wyjściowe

Film z dźwiękiem

Limity

Wpisywanie tekstu

1024 tokeny

Film wyjściowy

1

Ostatnia aktualizacja Lipiec 2025 r.

Veo 3 Fast

Veo 3 Fast umożliwia deweloperom tworzenie filmów z dźwiękiem przy zachowaniu wysokiej jakości i optymalizacji pod kątem szybkości oraz zastosowań biznesowych. Jest to idealne rozwiązanie w przypadku usług backendu, które programowo generują reklamy, narzędzi do szybkiego testowania A/B koncepcji kreatywnych lub aplikacji, które muszą szybko tworzyć treści do mediów społecznościowych.
Właściwość Opis
Kod modelu

Gemini API

veo-3.0-fast-generate-001

Obsługiwane typy danych

Wejście

Tekst, obraz

Dane wyjściowe

Film z dźwiękiem

Limity

Wpisywanie tekstu

1024 tokeny

Film wyjściowy

1

Ostatnia aktualizacja Lipiec 2025 r.

Veo 2

Właściwość Opis
Kod modelu

Gemini API

veo-2.0-generate-001

Obsługiwane typy danych

Wejście

Tekst, obraz

Dane wyjściowe

Wideo

Limity

Wpisywanie tekstu

Nie dotyczy

Wejście obrazu

Dowolna rozdzielczość i format obrazu, rozmiar pliku do 20 MB

Film wyjściowy

Do 2

Ostatnia aktualizacja Kwiecień 2025 r.

Co dalej?