Generare video con Veo 3

Veo 3 è il modello all'avanguardia di Google per la generazione di video di 8 secondi a 720p di alta fedeltà da un prompt di testo, caratterizzati da un realismo straordinario e da audio generato in modo nativo. Veo 3 eccelle in un'ampia gamma di stili visivi e cinematografici. Scegli un esempio qui sotto per scoprire come generare un video con dialoghi, realismo cinematografico o animazione creativa.

Generare video da immagini

Il seguente codice mostra la generazione di un'immagine utilizzando Imagen, quindi l'utilizzo di questa immagine come frame iniziale del video.

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

Vai

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

Parametri e specifiche per la generazione di video

Questi sono i parametri che puoi impostare nella richiesta API per controllare il processo di generazione dei video.

Parametro Descrizione Veo 3 (anteprima) Veo 2 (stabile)
prompt La descrizione testuale del video. Supporta i segnali acustici. string string
negativePrompt Testo che descrive cosa evitare nel video. string string
image Un'immagine iniziale da animare. Non supportato Image oggetto
aspectRatio Le proporzioni del video. "16:9" "16:9", "9:16"
personGeneration Controlla la generazione di persone. "allow_all" "allow_all", "allow_adult", "dont_allow"

Puoi personalizzare la generazione di video impostando i parametri nella richiesta. Ad esempio, puoi specificare negativePrompt per guidare il modello.

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

Vai

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

Gestione delle operazioni asincrone

La generazione di video è un'attività che richiede un'elevata potenza di calcolo. Quando invii una richiesta, l'API avvia un job a lunga esecuzione e restituisce immediatamente un oggetto operation. A questo punto, devi eseguire il polling finché il video non è pronto, come indicato dallo stato done.

Il fulcro di questo processo è un ciclo di polling, che controlla periodicamente lo stato del job.

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

Funzionalità del modello

Funzionalità Descrizione Veo 3 (anteprima) Veo 2 (stabile)
Audio Genera audio in modo nativo con il video. ✔️ Sempre attivo ❌ Solo silenzioso
Modalità di input Il tipo di input utilizzato per la generazione. Da testo a video Da testo a video, da immagine a video
Risoluzione La risoluzione di output del video. 720p 720p
Frequenza fotogrammi La frequenza fotogrammi di output del video. 24 fps 24 fps
Durata video Durata del video generato. 8 secondi 5-8 secondi
Video per richiesta Numero di video generati per richiesta. 1 1 o 2
Stato e dettagli Disponibilità del modello e ulteriori dettagli. Anteprima Stabile

Consulta le pagine Modelli, Prezzi e Limiti di frequenza per ulteriori limitazioni di utilizzo di Veo.

Guida ai prompt di Veo

Questa sezione contiene esempi di video che puoi creare utilizzando Veo e mostra come modificare i prompt per produrre risultati diversi.

Filtri di sicurezza

Veo applica filtri di sicurezza in Gemini per garantire che i video generati e le foto caricate non contengano contenuti offensivi. I prompt che violano i nostri termini e linee guida vengono bloccati.

Richiesta di audio (Veo 3)

Con Veo 3, puoi fornire indicazioni per effetti sonori, rumore ambientale e dialoghi. Il modello acquisisce le sfumature di questi segnali per generare una colonna sonora sincronizzata.

  • Dialogo:utilizza le virgolette per un discorso specifico. (Esempio: "Questa deve essere la chiave", sussurrò.)
  • Effetti sonori (SFX): descrivi esplicitamente i suoni. (ad es. pneumatici che stridono forte, motore che romba).
  • Rumore ambientale:descrivi il paesaggio sonoro dell'ambiente. (Esempio: sullo sfondo si sente un ronzio leggero e inquietante.)

Questi video mostrano come richiedere la generazione di audio di Veo 3 con livelli di dettaglio crescenti.

Prompt Output generato
Più dettagli (dialoghi e ambiente)
Primo piano di due persone che fissano un disegno criptico su una parete, la luce di una torcia che tremola. "Questa deve essere la chiave", mormorò, tracciando il disegno. "Ma cosa significa?" ha chiesto, perplessa, inclinando la testa. Pietra umida, intagli intricati, simboli nascosti. Un ronzio leggero e inquietante risuona sullo sfondo.
Cacciatori di tesori in una grotta.
Meno dettagli (dialogo)
Campeggio (stop motion): camper: "Ora sono tutt'uno con la natura!" Orso: "La natura preferirebbe un po' di spazio personale".
Cacciatori di tesori in una grotta.

Prova questi prompt per ascoltare l'audio. Prova Veo 3

Nozioni di base sulla scrittura di prompt

I prompt efficaci sono descrittivi e chiari. Per ottenere il massimo da Veo, inizia identificando la tua idea principale, perfezionala aggiungendo parole chiave e modificatori e incorpora la terminologia specifica dei video nei tuoi prompt.

I seguenti elementi devono essere inclusi nel prompt:

  • Soggetto: l'oggetto, la persona, l'animale o il paesaggio che vuoi includere nel video, ad esempio paesaggio urbano, natura, veicoli o cuccioli.
  • Azione: cosa sta facendo il soggetto (ad esempio, camminando, correndo o girando la testa).
  • Stile: specifica la direzione creativa utilizzando parole chiave specifiche per lo stile cinematografico, ad esempio fantascienza, film horror, film noir o stili di animazione come cartone animato.
  • Posizionamento e movimento della videocamera: [facoltativo] controlla la posizione e il movimento della videocamera utilizzando termini come vista aerea, altezza degli occhi, inquadratura dall'alto, carrellata o dal basso.
  • Composizione: [facoltativo] come è inquadrato lo scatto, ad esempio campo lungo, primo piano, scatto singolo o scatto a due.
  • Effetti di messa a fuoco e obiettivo: [facoltativo] utilizza termini come messa a fuoco selettiva, messa a fuoco profonda, messa a fuoco morbida, obiettivo macro e obiettivo grandangolare per ottenere effetti visivi specifici.
  • Atmosfera: [facoltativo] in che modo il colore e la luce contribuiscono alla scena, ad esempio toni blu, notte o toni caldi.

Altri suggerimenti per scrivere prompt

  • Utilizza un linguaggio descrittivo: utilizza aggettivi e avverbi per fornire un quadro chiaro a Veo.
  • Migliora i dettagli del viso: specifica i dettagli del viso come punto focale della foto, ad esempio utilizzando la parola ritratto nel prompt.

Per strategie di prompting più complete, visita la pagina Introduzione alla progettazione dei prompt.

Prompt e output di esempio

Questa sezione presenta diversi prompt, evidenziando come i dettagli descrittivi possano migliorare il risultato di ogni video.

Ghiaccioli

Questo video mostra come utilizzare gli elementi delle basi per la scrittura di prompt nel prompt.

Prompt Output generato
Primo piano (composizione) di stalattiti che si sciolgono (soggetto) su una parete rocciosa congelata (contesto) con tonalità fredde di blu (atmosfera), con zoom (movimento della videocamera) che mantiene i dettagli ravvicinati delle gocce d'acqua (azione). Stalattiti che gocciolano su uno sfondo blu.

Uomo al telefono

Questi video mostrano come rivedere il prompt con dettagli sempre più specifici per fare in modo che Veo perfezioni l'output in base alle tue preferenze.

Prompt Output generato
Meno dettagli
La videocamera si sposta per mostrare il primo piano di un uomo disperato che indossa un impermeabile verde. Sta effettuando una chiamata con un telefono a muro in stile retrò con una luce verde al neon. Sembra una scena di un film.
Uomo che parla al telefono.
Maggiori dettagli
Un primo piano cinematografico segue un uomo disperato con un cappotto verde consunto mentre compone un numero su un telefono a disco montato su un muro di mattoni grezzi, immerso nel bagliore inquietante di un'insegna al neon verde. La videocamera si avvicina, rivelando la tensione nella mascella e la disperazione incisa sul suo volto mentre fatica a fare la chiamata. La profondità di campo ridotta mette a fuoco la sua fronte aggrottata e il telefono nero con tasti rotanti, sfocando lo sfondo in un mare di colori al neon e ombre indistinte, creando un senso di urgenza e isolamento.
Uomo che parla al telefono

Leopardo delle nevi

Prompt Output generato
Prompt semplice:
Una creatura carina con pelliccia simile a quella di un leopardo delle nevi cammina in una foresta invernale, rendering in stile cartone animato 3D.
Il leopardo delle nevi è letargico.
Prompt dettagliato:
crea una breve scena animata in 3D in stile cartone animato gioioso. Una simpatica creatura con pelliccia simile a quella del leopardo delle nevi, grandi occhi espressivi e una forma amichevole e arrotondata che trotterella felice in una foresta invernale fantastica. La scena dovrebbe mostrare alberi arrotondati e innevati, fiocchi di neve che cadono delicatamente e una calda luce solare che filtra attraverso i rami. I movimenti rimbalzanti della creatura e il suo ampio sorriso devono trasmettere pura gioia. Punta a un tono allegro e commovente con colori vivaci e allegri e animazioni giocose.
Il leopardo delle nevi sta correndo più velocemente.

Esempi per elementi di scrittura

Questi esempi mostrano come perfezionare i prompt in base a ogni elemento di base.

Oggetto e contesto

Specifica il soggetto principale e lo sfondo o l'ambiente.

Prompt Output generato
Rendering architettonico di un condominio in cemento bianco con forme organiche fluide, che si fondono perfettamente con la vegetazione lussureggiante ed elementi futuristici Segnaposto.
Un satellite che fluttua nello spazio con la luna e alcune stelle sullo sfondo. Satellite che fluttua nell'atmosfera.

Azione

Specifica cosa sta facendo il soggetto (ad es. camminare, correre o girare la testa).

Prompt Output generato
Un'inquadratura ampia di una donna che cammina lungo la spiaggia, con un'espressione serena e rilassata, mentre guarda l'orizzonte al tramonto. Il tramonto è assolutamente meraviglioso.

Stile

Aggiungi parole chiave per indirizzare la generazione verso un'estetica specifica (ad es. surreale, vintage, futuristico, film noir).

Prompt Output generato
Stile noir, uomo e donna camminano per strada, mistero, cinematografico, bianco e nero. Lo stile noir è assolutamente meraviglioso.

Movimento della videocamera e composizione

Specifica come si muove la videocamera (soggettiva, vista aerea, vista con drone di monitoraggio) e come viene inquadrato il soggetto (campo lungo, primo piano, angolazione dal basso).

Prompt Output generato
Una ripresa in soggettiva da un'auto d'epoca che guida sotto la pioggia, Canada di notte, cinematografica. Il tramonto è assolutamente meraviglioso.
Primo piano estremo di un occhio con il riflesso della città. Il tramonto è assolutamente meraviglioso.

Atmosfera

Le tavolozze dei colori e l'illuminazione influenzano l'atmosfera. Prova a usare termini come "toni caldi arancioni tenui", "luce naturale", "alba" o "toni freddi blu".

Prompt Output generato
Primo piano di una ragazza che tiene in braccio un adorabile cucciolo di golden retriever nel parco, luce solare. Un cucciolo tra le braccia di una bambina.
Primo piano cinematografico di una donna triste che viaggia in autobus sotto la pioggia, con tonalità fredde di blu e un'atmosfera malinconica. Una donna che viaggia su un autobus e si sente triste.

Utilizzare immagini di riferimento per generare video

Puoi dare vita alle immagini utilizzando la funzionalità di conversione di immagini in video di Veo.

Prompt Output generato
Immagine di input (generata da Imagen)
Coniglio con una barretta di cioccolato.
Il coniglio sta scappando.
Video di output (generato da Veo 2)
Il coniglio scappa.
Il coniglio sta scappando.

Prompt negativi

I prompt negativi specificano gli elementi che non vuoi nel video.

  • ❌ Non utilizzare un linguaggio che dia istruzioni, ad esempio no o non. (ad es. "No walls" (Nessuna parete).
  • ✅ Descrivi ciò che non vuoi vedere. (ad es. "wall, frame").
Prompt Output generato
Senza prompt negativo:
genera una breve animazione stilizzata di una grande quercia solitaria con le foglie mosse vigorosamente da un forte vento… [troncato]
Albero con parole.
Con prompt negativo:
[Stesso prompt]

Prompt negativo: sfondo urbano, strutture artificiali, atmosfera buia, tempestosa o minacciosa.
Albero senza parole negative.

Proporzioni

Veo ti consente di specificare le proporzioni del video.

Prompt Output generato
Widescreen (16:9)
Crea un video con una vista da drone di un uomo che guida una decappottabile rossa a Palm Springs negli anni '70, con luce solare calda e ombre lunghe.
Un uomo alla guida di un'auto cabriolet rossa a Palm Springs, in stile anni '70.
Verticale (9:16 - solo Veo 2)
Crea un video che metta in evidenza il movimento fluido di una maestosa cascata hawaiana all'interno di una lussureggiante foresta pluviale. Concentrati sul flusso realistico dell'acqua, sul fogliame dettagliato e sull'illuminazione naturale per trasmettere tranquillità. Cattura l'acqua impetuosa, l'atmosfera nebbiosa e la luce del sole screziata che filtra attraverso la fitta chioma degli alberi. Utilizza movimenti di ripresa fluidi e cinematografici per mostrare la cascata e l'ambiente circostante. Punta a un tono tranquillo e realistico, trasportando lo spettatore nella serena bellezza della foresta pluviale hawaiana.
Una maestosa cascata hawaiana in una lussureggiante foresta pluviale.

Limitazioni

  • Latenza richiesta: min. 11 secondi; max. 6 minuti (durante le ore di punta).
  • Limitazioni regionali:personGeneration: "allow_all" (impostazione predefinita in Veo 3) e Image-to-video personGeneration (Veo 2) non sono consentiti in UE, Regno Unito, Svizzera e MENA.
  • Conservazione dei video:i video generati vengono memorizzati sul server per 2 giorni, dopodiché vengono rimossi. Per salvare una copia locale, devi scaricare il video entro 2 giorni dalla generazione.
  • Filigrana: ai video creati da Veo viene applicata una filigrana utilizzando SynthID, il nostro strumento per l'applicazione di filigrane e l'identificazione di contenuti creati con l'AI.
  • Sicurezza:i video generati vengono sottoposti a filtri di sicurezza e processi di controllo della memorizzazione che contribuiscono a mitigare i rischi per la privacy, il copyright e i pregiudizi.

Passaggi successivi