Générer des vidéos avec Veo 3

Veo 3 est le modèle de pointe de Google pour générer des vidéos de huit secondes en 720p de haute fidélité à partir d'un prompt textuel. Il offre un réalisme saisissant et un son généré de manière native. Veo 3 excelle dans un large éventail de styles visuels et cinématographiques. Choisissez un exemple ci-dessous pour découvrir comment générer une vidéo avec des dialogues, un réalisme cinématographique ou une animation créative.

Générer des vidéos à partir d'images

Le code suivant montre comment générer une image à l'aide d'Imagen, puis l'utiliser comme frame de départ pour la vidéo.

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

Go

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

Paramètres et spécifications de la génération de vidéos

Il s'agit des paramètres que vous pouvez définir dans votre requête API pour contrôler le processus de génération de vidéos.

Paramètre Description Veo 3 (preview) Veo 2 (Stable)
prompt Description textuelle de la vidéo. Compatible avec les repères audio. string string
negativePrompt Texte décrivant ce qu'il faut éviter dans la vidéo. string string
image Image initiale à animer. Non compatible Objet Image
aspectRatio Format de la vidéo. "16:9" "16:9", "9:16"
personGeneration Contrôle la génération de personnes. "allow_all" "allow_all", "allow_adult", "dont_allow"

Vous pouvez personnaliser la génération de vos vidéos en définissant des paramètres dans votre requête. Par exemple, vous pouvez spécifier negativePrompt pour guider le modèle.

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

Go

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

Gérer les opérations asynchrones

La génération de vidéos est une tâche gourmande en ressources de calcul. Lorsque vous envoyez une requête, l'API lance un job de longue durée et renvoie immédiatement un objet operation. Vous devez ensuite interroger l'API jusqu'à ce que la vidéo soit prête, ce qui est indiqué par l'état done défini sur "true".

Le cœur de ce processus est une boucle d'interrogation qui vérifie régulièrement l'état du 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 ...

Fonctionnalités du modèle

Fonctionnalité Description Veo 3 (preview) Veo 2 (Stable)
Audio Génère l'audio avec la vidéo de manière native. ✔️ Toujours activé ❌ Mode silencieux uniquement
Modalités d'entrée Type d'entrée utilisé pour la génération. Texte vers vidéo Texte-vers-vidéo, image-vers-vidéo
Solution Résolution de sortie de la vidéo. 720p 720p
Fréquence d'images Fréquence d'images de sortie de la vidéo. 24 ips 24 ips
Durée de la vidéo Durée de la vidéo générée. 8 secondes 5 à 8 secondes
Vidéos par demande Nombre de vidéos générées par requête. 1 1 ou 2
État et détails Disponibilité des modèles et autres informations Aperçu Stable

Consultez les pages Modèles, Tarifs et Limites de débit pour en savoir plus sur les limites d'utilisation de Veo.

Guide sur les requêtes Veo

Cette section contient des exemples de vidéos que vous pouvez créer à l'aide de Veo. Elle vous montre également comment modifier les requêtes pour obtenir des résultats différents.

Filtres de sécurité

Veo applique des filtres de sécurité dans Gemini pour s'assurer que les vidéos générées et les photos importées ne contiennent pas de contenu offensant. Les requêtes qui ne respectent pas nos conditions d'utilisation et nos consignes sont bloquées.

Requêtes pour l'audio (Veo 3)

Avec Veo 3, vous pouvez fournir des indications pour les effets sonores, les bruits de fond et les dialogues. Le modèle capture la nuance de ces repères pour générer une bande-son synchronisée.

  • Dialogue : utilisez des guillemets pour les paroles spécifiques. (Exemple : "Ça doit être la clé", murmura-t-il.)
  • Effets sonores : décrivez explicitement les sons. (Exemple : pneus qui crissent fortement, moteur qui rugit.)
  • Bruit ambiant : décrivez l'environnement sonore. (Exemple : Un léger bourdonnement étrange résonne en arrière-plan.)

Ces vidéos montrent comment inciter Veo à générer de l'audio avec des niveaux de détail croissants.

Requête Résultat généré
Plus de détails (dialogues et ambiance)
 Gros plan sur deux personnes fixant un dessin énigmatique sur un mur, à la lueur d'une torche. "Ce doit être la clé", murmura-t-il en suivant le motif du doigt. "Mais qu'est-ce que ça veut dire ?" a-t-elle demandé, perplexe, en inclinant la tête. Pierres humides, sculptures complexes, symboles cachés. Un léger bourdonnement étrange résonne en arrière-plan.
Chasseurs de trésors dans une grotte.
Moins de détails (dialogue)
 Camping (stop motion) : Camper : "Je ne fais plus qu'un avec la nature !" Ours : "La nature préférerait un peu d'espace personnel".
Chasseurs de trésors dans une grotte.

Essayez ces requêtes pour écouter le son ! Essayer Veo 3

Principes de base concernant l'écriture de requêtes

Les bons prompts sont descriptifs et clairs. Pour exploiter tout le potentiel de Veo, commencez par identifier votre idée principale, affinez-la en ajoutant des mots clés et des modificateurs, et intégrez des termes spécifiques aux vidéos dans vos requêtes.

Votre requête doit inclure les éléments suivants :

  • Sujet : l'objet, la personne, l'animal ou le paysage que vous souhaitez voir dans votre vidéo, par exemple paysage urbain, nature, véhicules ou chiots.
  • Action : ce que fait le sujet (par exemple, marcher, courir ou tourner la tête).
  • Style : spécifiez l'orientation créative à l'aide de mots clés spécifiques au style de film, comme science-fiction, film d'horreur, film noir ou des styles d'animation comme dessin animé.
  • Position et mouvement de la caméra : [Facultatif] Contrôlez l'emplacement et le mouvement de la caméra à l'aide de termes tels que vue aérienne, à hauteur des yeux, vue de dessus, travelling ou vue de dessous.
  • Composition : [facultatif] cadrage du plan, par exemple plan large, gros plan, plan unique ou plan à deux.
  • Mise au point et effets d'objectif : [facultatif] utilisez des termes tels que mise au point réduite, mise au point étendue, mise au point douce, objectif macro et objectif grand-angle pour obtenir des effets visuels spécifiques.
  • Ambiance : [facultatif] la façon dont la couleur et la lumière contribuent à la scène, par exemple tons bleus, nuit ou tons chauds.

Autres conseils pour rédiger des requêtes

  • Utilisez un langage descriptif : utilisez des adjectifs et des adverbes pour donner une image claire à Veo.
  • Améliorez les détails du visage : spécifiez les détails du visage comme point central de la photo en utilisant le mot portrait dans la requête.

Pour des stratégies de requête plus complètes, consultez Présentation de la conception des requêtes.

Exemples de requêtes et de résultats

Cette section présente plusieurs requêtes, en soulignant comment les détails descriptifs peuvent améliorer le résultat de chaque vidéo.

Glaçons

Cette vidéo vous montre comment utiliser les éléments des principes de base de la rédaction de requêtes dans votre requête.

Requête Résultat généré
Gros plan (composition) de stalactites de glace (sujet) en train de fondre sur une paroi rocheuse gelée (contexte) avec des tons bleus froids (ambiance), zoom avant (mouvement de caméra) en conservant les détails des gouttes d'eau (action). Des stalactites qui fondent sur un fond bleu.

Un homme au téléphone

Ces vidéos montrent comment réviser votre requête en ajoutant des détails de plus en plus spécifiques pour que Veo affine le résultat à votre goût.

Requête Résultat généré
Moins de détails
La caméra effectue un travelling pour montrer un gros plan d'un homme désespéré portant un trench vert. Il passe un appel sur un téléphone mural à cadran avec un néon vert. Il ressemble à une scène de film.
Un homme parle au téléphone.
Plus de détails
Un gros plan cinématographique suit un homme désespéré portant un trench vert usé alors qu'il compose un numéro sur un téléphone à cadran fixé sur un mur de briques rugueux, baigné dans la lueur étrange d'un néon vert. La caméra se rapproche, révélant la tension dans sa mâchoire et le désespoir gravé sur son visage alors qu'il s'efforce de passer l'appel. La faible profondeur de champ se concentre sur ses sourcils froncés et le téléphone noir à cadran, floutant l'arrière-plan en une mer de couleurs néon et d'ombres indistinctes, créant un sentiment d'urgence et d'isolement.
Homme parlant au téléphone

Léopard des neiges

Requête Résultat généré
Requête simple :
Une créature mignonne avec une fourrure de léopard des neiges marche dans une forêt hivernale, rendu de style dessin animé 3D.
Le léopard des neiges est léthargique.
Requête détaillée :
Crée une courte scène animée en 3D dans un style cartoon joyeux. Une créature mignonne avec une fourrure semblable à celle d'un léopard des neiges, de grands yeux expressifs et une forme arrondie et amicale gambade joyeusement dans une forêt hivernale fantaisiste. La scène doit comporter des arbres arrondis et enneigés, des flocons de neige qui tombent doucement et une lumière du soleil chaude qui filtre à travers les branches. Les mouvements rebondissants de la créature et son large sourire doivent exprimer une joie pure. Optez pour un ton optimiste et chaleureux, avec des couleurs vives et gaies, et des animations ludiques.
Snow Leopard s'exécute plus rapidement.

Exemples par éléments de rédaction

Ces exemples vous montrent comment affiner vos requêtes en fonction de chaque élément de base.

Sujet et contexte

Spécifiez le point focal principal (sujet) et l'arrière-plan ou l'environnement (contexte).

Requête Résultat généré
Rendu architectural d'un immeuble d'appartements en béton blanc avec des formes organiques fluides, se fondant parfaitement dans une végétation luxuriante et des éléments futuristes Espace réservé.
Un satellite flottant dans l'espace, avec la lune et quelques étoiles en arrière-plan. Satellite flottant dans l'atmosphère.

Action

Spécifiez ce que fait le sujet (par exemple, marcher, courir ou tourner la tête).

Requête Résultat généré
Plan large d'une femme marchant le long de la plage, l'air satisfait et détendu, regardant l'horizon au coucher du soleil. Le coucher de soleil est absolument magnifique.

Style

Ajoutez des mots clés pour orienter la génération vers une esthétique spécifique (par exemple, surréaliste, vintage, futuriste, film noir).

Requête Résultat généré
Style film noir, homme et femme marchant dans la rue, mystère, cinématographique, noir et blanc. Le style film noir est absolument magnifique.

Mouvement de la caméra et composition

Précisez comment la caméra se déplace (vue subjective, vue aérienne, vue de drone en suivi) et comment le plan est cadré (plan large, gros plan, vue en contre-plongée).

Requête Résultat généré
Vue subjective depuis une voiture ancienne roulant sous la pluie, Canada de nuit, style cinématographique. Le coucher de soleil est absolument magnifique.
Gros plan sur un œil avec une ville reflétée dedans. Le coucher de soleil est absolument magnifique.

Ambiance

Les palettes de couleurs et l'éclairage influencent l'ambiance. Essayez des termes comme "tons chauds orange atténués", "lumière naturelle", "lever du soleil" ou "tons bleus froids".

Requête Résultat généré
Gros plan sur une fille tenant un adorable chiot golden retriever dans le parc, en plein soleil. Un chiot dans les bras d'une jeune fille.
Gros plan cinématographique d'une femme triste qui prend le bus sous la pluie, tons bleus froids, ambiance triste. Une femme assise dans un bus a l'air triste.

Utiliser des images de référence pour générer des vidéos

Vous pouvez donner vie à des images en utilisant la fonctionnalité image-to-video de Veo.

Requête Résultat généré
Image d'entrée (générée par Imagen)
Lapin avec une barre chocolatée.
Le lapin s'enfuit.
Vidéo générée par Veo 2
Un lapin s'enfuit.
Le lapin s'enfuit.

Requêtes négatives

Les requêtes négatives spécifient les éléments que vous ne souhaitez pas voir dans la vidéo.

  • ❌ N'utilisez pas de mots ou d'expressions instructives comme pas de ou ne pas. (par exemple, "Pas de murs").
  • ✅ Décrivez ce que vous ne voulez pas voir. (par exemple, "wall, frame").
Requête Résultat généré
Sans requête négative :
Génère une courte animation stylisée d'un grand chêne solitaire dont les feuilles sont emportées par un vent violent… [tronqué]
Arbre avec des mots.
Avec un mot clé négatif :
[Même requête]

Mot clé négatif : arrière-plan urbain, structures artificielles, atmosphère sombre, orageuse ou menaçante.
Arbre sans mots négatifs.

Formats

Veo vous permet de spécifier le format de votre vidéo.

Requête Résultat généré
Grand écran (16:9)
Crée une vidéo avec une vue de drone suivant un homme conduisant une décapotable rouge à Palm Springs dans les années 1970, avec une lumière chaude et de longues ombres.
Un homme conduit une décapotable rouge à Palm Springs, dans le style des années 1970.
Portrait (9:16, Veo 2 uniquement)
Crée une vidéo mettant en avant le mouvement fluide d'une majestueuse cascade hawaïenne au cœur d'une forêt tropicale luxuriante. Concentrez-vous sur un débit d'eau réaliste, un feuillage détaillé et un éclairage naturel pour transmettre la tranquillité. Capturez l'eau vive, l'atmosphère brumeuse et la lumière du soleil filtrant à travers la canopée dense. Utilisez des mouvements de caméra fluides et cinématographiques pour mettre en valeur la cascade et ses environs. Adopte un ton paisible et réaliste, et transporte le spectateur dans la beauté sereine de la forêt tropicale hawaïenne.
Majestueuse cascade hawaïenne dans une forêt tropicale luxuriante

Limites

  • Latence des requêtes : min. 11 secondes ; max. 6 minutes (pendant les heures de pointe).
  • Limites régionales : les fonctionnalités personGeneration: "allow_all" (par défaut dans Veo 3) et Image-to-video personGeneration (Veo 2) ne sont pas autorisées dans l'UE, au Royaume-Uni, en Suisse et dans la région MENA.
  • Conservation des vidéos : les vidéos générées sont stockées sur le serveur pendant deux jours, après quoi elles sont supprimées. Pour enregistrer une copie locale, vous devez télécharger votre vidéo dans les deux jours suivant sa génération.
  • Filigranes : les vidéos créées par Veo sont marquées avec SynthID, notre outil permettant d'ajouter un filigrane et d'identifier les contenus générés par IA.
  • Sécurité : les vidéos générées sont soumises à des filtres de sécurité et à des processus de vérification de la mémorisation qui permettent d'atténuer les risques liés à la confidentialité, aux droits d'auteur et aux biais.

Étape suivante