Veo 3 to najnowocześniejszy model Google do generowania 8-sekundowych filmów w rozdzielczości 720p o wysokiej jakości na podstawie promptów tekstowych. Generuje realistyczne filmy z dźwiękiem. Veo 3 doskonale radzi sobie z różnymi stylami wizualnymi i filmowymi. Wybierz poniżej przykład, aby zobaczyć, jak wygenerować film z dialogami, kinowym realizmem lub kreatywną animacją.
Generowanie filmów na podstawie obrazów
Poniższy kod pokazuje, jak wygenerować obraz za pomocą Imagen, a następnie użyć go jako klatki początkowej filmu.
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 Imagen
imagen = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
)
# Step 2: Generate video with Veo 2 using the image
operation = client.models.generate_videos(
model="veo-2.0-generate-001",
prompt=prompt,
image=imagen.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("veo2_with_image_input.mp4")
print("Generated video saved to veo2_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 Imagen
const imagenResponse = await ai.models.generateImages({
model: "imagen-3.0-generate-002",
prompt: prompt,
});
// Step 2: Generate video with Veo 2 using the image
let operation = await ai.models.generateVideos({
model: "veo-2.0-generate-001", // Use Veo 2
prompt: prompt,
image: {
imageBytes: imagenResponse.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: "veo2_with_image_input.mp4",
});
console.log(`Generated video saved to veo2_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 Imagen
imagenResponse, err := client.Models.GenerateImages(
ctx,
"imagen-3.0-generate-002",
prompt,
nil, // GenerateImagesConfig
)
if err != nil {
log.Fatal(err)
}
// Step 2: Generate video with Veo 2 using the image
operation, err := client.Models.GenerateVideos(
ctx,
"veo-2.0-generate-001",
prompt,
imagenResponse.GeneratedImages[0].Image, // Use generated 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 := "veo2_with_image_input.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
Parametry i specyfikacje generowania filmów
Są to parametry, które możesz ustawić w żądaniu interfejsu API, aby kontrolować proces generowania filmu.
Parametr | Opis | Veo 3 (wersja testowa) | Veo 2 (stabilna) |
---|---|---|---|
prompt |
Tekstowy opis filmu. Obsługuje wskazówki audio. | string |
string |
negativePrompt |
Tekst opisujący, czego należy unikać w filmie. | string |
string |
image |
Początkowy obraz do animacji. | Nieobsługiwane | Image obiekt |
aspectRatio |
Format obrazu filmu. | "16:9" |
"16:9" , "9:16" |
personGeneration |
Określa generowanie osób. | "allow_all" |
"allow_all" , "allow_adult" , "dont_allow" |
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.0-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.0-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.0-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.0-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
Obsługa operacji asynchronicznych
Generowanie filmów jest zadaniem wymagającym dużej mocy obliczeniowej. Gdy wyślesz żądanie, interfejs API rozpocznie 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.0-generate-preview",
prompt="A cinematic shot of a majestic lion in the savannah.",
)
# Alternatively, you can use the 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.0-generate-preview",
prompt: "A cinematic shot of a majestic lion in the savannah.",
});
// Alternatively, you can use the 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 ...
Funkcje modelu
Funkcja | Opis | Veo 3 (wersja testowa) | Veo 2 (stabilna) |
---|---|---|---|
Dźwięk | Natywnie generuje dźwięk z filmu. | ✔️ Zawsze włączony | ❌ Tylko cichy |
Rodzaje danych wejściowych | Typ danych wejściowych użytych do generowania. | Tekst na film | Tekst na film, obraz na film |
Rozdzielczość | Rozdzielczość wyjściowa filmu. | 720p | 720p |
Liczba klatek | Liczba klatek na sekundę wyjściowego filmu. | 24 kl./s | 24 kl./s |
Czas trwania filmu | Długość wygenerowanego filmu. | 8 sekund | 5–8 sekund |
Filmy na żądanie | Liczba filmów wygenerowanych na żądanie. | 1 | 1 lub 2 |
Stan i szczegóły | Dostępność modelu i dalsze szczegóły. | Podgląd | Stabilna |
Więcej ograniczeń dotyczących korzystania z Veo znajdziesz na stronach Modele, Ceny i Limity.
Przewodnik po promptach w Veo
Ta sekcja zawiera przykłady filmów, które możesz utworzyć za pomocą Veo, oraz pokazuje, 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.
Prompting for Audio (Veo 3)
W przypadku Veo 3 możesz podawać wskazówki dotyczące efektów dźwiękowych, szumu otoczenia i dialogów. Model uwzględnia 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: głośny pisk opon, ryk silnika).
- 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) Zbliżenie na 2 osoby wpatrujące się w tajemniczy rysunek na ścianie, przy migoczącym świetle latarki. – To musi być klucz – mruknął, odrysowując wzór. „Ale co to znaczy?” zapytała z zaciekawieniem, przechylając głowę. Wilgotny kamień, misternie rzeźbione detale, ukryte symbole. W tle słychać cichy, niesamowity szum. |
|
Mniej szczegółów (dialog) Kemping (animacja poklatkowa): turysta: „Teraz jestem jednością z naturą!”. Miś: „Natura wolałaby trochę przestrzeni osobistej”. |
|
Wypróbuj te prompty, aby usłyszeć dźwięk. Wypróbuj Veo 3
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 włącz do promptów 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, używając słów kluczowych związanych z określonym stylem filmowym, np. science fiction, horror, film noir lub stylem animacji, np. 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.
- Ostrość i efekty 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 przedstawić Veo jasny obraz.
- 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 wprowadzającym do projektowania promptów.
Przykładowe prompty i dane wyjściowe
W tej sekcji znajdziesz kilka promptów, które pokazują, jak szczegółowe opisy mogą poprawić jakość 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). |
|
Mężczyzna rozmawia przez telefon
Te filmy pokazują, jak możesz poprawiać prompt, dodając coraz bardziej szczegółowe informacje, aby Veo dostosował wynik 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 to jak scena z filmu. |
|
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. |
|
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. |
|
Szczegółowy prompt: Utwórz krótką animowaną scenę 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. |
|
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. |
|
Satelita unoszący się w kosmosie z księżycem i gwiazdami w tle. |
|
Działanie
Określ, co robi osoba (np. idzie, 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. |
|
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, filmowy, czarno-biały. |
|
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 (szeroki plan, 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. |
|
Ekstremalne zbliżenie oka, w którym odbija się miasto. |
|
Atmosfera
Palety kolorów i oświetlenie wpływają na nastrój. Spróbuj użyć terminów takich jak „stonowane pomarańczowe ciepłe odcienie”, „naturalne światło”, „wschód słońca” lub „chłodne niebieskie odcienie”.
Prompt | Wygenerowane dane wyjściowe |
---|---|
Zbliżenie na dziewczynkę trzymającą uroczego szczeniaka golden retrievera w parku, w promieniach słońca. |
|
Filmowe zbliżenie na smutną kobietę jadącą autobusem w deszczu, chłodne niebieskie odcienie, smutny nastrój. |
|
Używanie obrazów referencyjnych do generowania filmów
Możesz ożywiać obrazy, korzystając z funkcji przekształcania obrazów w filmy w Veo.
Prompt | Wygenerowane dane wyjściowe |
---|---|
Obraz wejściowy (wygenerowany przez Imagen) Królik z czekoladą. |
|
Film wyjściowy (wygenerowany przez Veo 2) Królik ucieka. |
|
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] |
|
Z negatywnym promptem: [Ten sam prompt] Negatywny prompt: tło miejskie, struktury stworzone przez człowieka, ciemna, burzowa lub groźna atmosfera. |
|
Formaty obrazu
Veo umożliwia określenie formatu obrazu 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. |
|
Pionowa (9:16 – tylko Veo 2) 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. |
|
Ograniczenia
- Czas oczekiwania na żądanie: min.: 11 sekund; maks.: 6 minut (w godzinach szczytu).
- Ograniczenia regionalne:
personGeneration: "allow_all"
(domyślne w Veo 3) i przekształcanie obrazu w filmpersonGeneration
(Veo 2) są niedozwolone w UE, Wielkiej Brytanii, Szwajcarii i regionie MENA. - 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.
- Dodawanie znaków wodnych: filmy utworzone za pomocą Veo są oznaczane znakiem wodnym za pomocą SynthID, naszego narzędzia do dodawania znaków wodnych i identyfikowania treści generowanych przez AI.
- 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 tendencyjnością.
Co dalej?
- Wypróbuj Veo 3 w krótkim wprowadzeniu do Veo w Colab.
- Dowiedz się, jak pisać jeszcze lepsze prompty, korzystając z naszego wprowadzenia do projektowania promptów.
- Jeśli chcesz używać funkcji tworzenia filmów z obrazów lub innych funkcji Veo 2, zapoznaj się z przewodnikiem po Veo 2 i migracji.