Insérer des objets dans des vidéos Veo

Vous pouvez utiliser Veo sur Vertex AI pour insérer des objets dans des vidéos en fournissant un masque et un objet image, puis en fournissant un prompt au modèle qui inclut une description du résultat souhaité.

Les modèles suivants sont compatibles avec l'insertion d'objets dans des vidéos :

Pour en savoir plus sur l'écriture de requêtes de texte efficaces pour la génération de vidéos, consultez le guide des requêtes Veo.

Essayer Veo dans Colab

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. Configurez l'authentification pour votre environnement.

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services Google Cloud et aux API, vous n'avez pas besoin de configurer l'authentification.

    Python

    Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.

    1. Installez la Google Cloud CLI.

    2. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    3. Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :

      gcloud auth application-default login

      Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.

      Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .

    REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Insérer un objet dans une vidéo

Console

  1. Dans la console Google Cloud , accédez à la page Vertex AI>Media Studio.

    Media Studio

  2. Cliquez sur Vidéo.

  3. Dans le menu Tâche, sélectionnez Inpainting vidéo (insertion).

  4. Dans le menu Modèle, sélectionnez un modèle parmi les options affichées.

  5. Dans la section Vidéo d'entrée, cliquez sur Ajouter.

  6. Dans la zone Prompt, saisissez un prompt textuel décrivant les vidéos à générer.

  7. Facultatif : Ajustez les paramètres suivants :

    • Nombre de résultats : ajustez le curseur ou saisissez une valeur comprise entre 1 et 4.

    • Répertoire de sortie : cliquez sur Parcourir pour créer ou sélectionner un bucket Cloud Storage afin d'y stocker les fichiers générés.

  8. Cliquez sur Exécuter.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import time
from google import genai
from google.genai.types import GenerateVideosSource, GenerateVideosConfig, Image, Video, VideoGenerationMask, VideoGenerationMaskMode

client = genai.Client()

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

operation = client.models.generate_videos(
    model="veo-2.0-generate-preview",
    source=GenerateVideosSource(
        prompt="a sheep",
        video=Video(uri="gs://cloud-samples-data/generative-ai/video/truck.mp4", mime_type="video/mp4")
    ),
    config=GenerateVideosConfig(
        mask=VideoGenerationMask(
            image=Image(
                gcs_uri="gs://cloud-samples-data/generative-ai/image/truck-inpainting-dynamic-mask.png",
                mime_type="image/png",
            ),
            mask_mode=VideoGenerationMaskMode.INSERT,
        ),
        output_gcs_uri=output_gcs_uri,
    ),
)

while not operation.done:
    time.sleep(15)
    operation = client.operations.get(operation)
    print(operation)

if operation.response:
    print(operation.result.generated_videos[0].video.uri)

# Example response:
# gs://your-bucket/your-prefix

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.

Pour en savoir plus sur l'API Veo, consultez les ressources suivantes :

  1. Utilisez la commande suivante pour envoyer une requête de génération de vidéo. Cette requête lance une opération de longue durée et stocke le résultat dans un bucket Cloud Storage que vous spécifiez.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
    • MASK_STORAGE_URI Chemin d'accès URI du bucket Cloud Storage vers l'objet masque.
    • MASK_MIME_TYPE : type MIME du masque d'image. Un seul des champs suivants :

      • image/png
      • image/jpeg
      • image/webp
    • VIDEO_INPUT_STORAGE_URI Chemin d'accès URI du bucket Cloud Storage de l'objet d'entrée vidéo.
    • VIDEO_MIME_TYPE Type MIME de l'objet vidéo. Un seul des champs suivants :

      • video/mov
      • video/mpeg
      • video/mp4
      • video/mpg
      • video/avi
      • video/wmv
      • video/mpegps
      • video/flv
    • OUTPUT_STORAGE_URI : (facultatif) bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si aucune valeur n'est fournie, une vidéo encodée en octets Base64 est renvoyée dans la réponse. Par exemple, gs://video-bucket/output/.
    • RESPONSE_COUNT : nombre de fichiers vidéo que vous souhaitez générer. Valeurs entières acceptées : 1 à 4.
    • Paramètres facultatifs supplémentaires

      Utilisez les variables facultatives suivantes en fonction de votre cas d'utilisation. Ajoutez l'ensemble ou une partie des paramètres suivants dans l'objet "parameters": {}.

      "parameters": {
        "aspectRatio": "ASPECT_RATIO",
        "negativePrompt": "NEGATIVE_PROMPT",
        "personGeneration": "PERSON_SAFETY_SETTING",
        // "resolution": RESOLUTION, // Veo 3 models only
        "sampleCount": RESPONSE_COUNT,
        "seed": SEED_NUMBER
      }
      • ASPECT_RATIO : (Facultatif) Valeur de chaîne décrivant le format des vidéos générées. Vous pouvez utiliser les valeurs suivantes :
        • "16:9" pour le mode Paysage
        • "9:16" pour le mode Portrait

        La valeur par défaut est "16:9".

      • NEGATIVE_PROMPT : (facultatif) valeur de chaîne décrivant le contenu que vous souhaitez empêcher le modèle de générer.
      • PERSON_SAFETY_SETTING : (Facultatif) Valeur de chaîne qui contrôle le paramètre de sécurité pour la génération de personnes ou de visages. Vous pouvez utiliser les valeurs suivantes :
        • "allow_adult" : autoriser uniquement la génération de personnes et de visages adultes.
        • "disallow" : ne génère pas de personnes ni de visages.

        La valeur par défaut est "allow_adult".

      • RESOLUTION : (Facultatif) Valeur de chaîne qui contrôle la résolution de la vidéo générée. Compatible uniquement avec les modèles Veo 3. Vous pouvez utiliser les valeurs suivantes :
        • "720p"
        • "1080p"
        • "4k" (modèles Veo 3.1 (preview) uniquement)

        La valeur par défaut est "720p".

      • RESPONSE_COUNT : Facultatif. Valeur entière décrivant le nombre de vidéos à générer. La plage de valeurs acceptée est comprise entre 1 et 4.
      • SEED_NUMBER : Facultatif. Valeur uint32 que le modèle utilise pour générer des vidéos déterministes. Si vous spécifiez un numéro source avec votre requête sans modifier d'autres paramètres, vous indiquez au modèle de produire les mêmes vidéos. La plage de valeurs acceptée est comprise entre 0 et 4294967295.

    Méthode HTTP et URL :

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning

    Corps JSON de la requête :

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          // The following fields can be repeated for up to three total
          // images.
          "mask": {
            "gcsUri": "MASK_STORAGE_URI",
            "mimeType": "MASK_MIME_TYPE",
            "maskMode": "insert"
          },
          "video": {
            "gcsUri": "VIDEO_INPUT_STORAGE_URI",
            "mimeType": "VIDEO_MIME_TYPE"
          }
        }
      ],
      "parameters": {
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": RESPONSE_COUNT,
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning" | Select-Object -Expand Content
    Cette requête renvoie un nom d'opération complet avec un ID d'opération unique. Utilisez ce nom d'opération complet pour interroger l'état de la demande de génération de vidéo.
    {
      "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. Facultatif : vérifiez l'état de l'opération de longue durée de génération de la vidéo.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • MODEL_ID : ID du modèle à utiliser.
    • OPERATION_ID : ID d'opération unique renvoyé dans la requête de génération de vidéo d'origine.

    Méthode HTTP et URL :

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation

    Corps JSON de la requête :

    {
      "operationName": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID"
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation" | Select-Object -Expand Content
    Cette requête renvoie des informations sur l'opération, y compris si elle est toujours en cours d'exécution ou si elle est terminée.

Étapes suivantes