Générer des vidéos à partir des première et dernière images vidéo

Vous pouvez utiliser Gemini Omni Flash ou Veo sur Gemini Enterprise Agent Platform pour générer des vidéos en spécifiant les premier et dernier frames de la vidéo. Les interfaces compatibles incluent la console Cloud de Confiance et l'API Agent Platform.

Les modèles suivants sont compatibles avec la génération de vidéos à partir de la première et de la dernière image vidéo :

Gemini Omni Flash

Cliquez pour développer la liste des modèles compatibles

Veo

Cliquez pour développer la liste des modèles compatibles

Pour en savoir plus sur la rédaction de prompts textuels efficaces pour la génération de vidéo, consultez le Guide sur les prompts Veo.

Essayer Gemini Omni Flash dans Colab

Avant de commencer

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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

  2. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  3. 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 Cloud de Confiance pour accéder aux services et aux API Cloud de Confiance by S3NS , vous n'avez pas besoin de configurer l'authentification.

    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, puis connectez-vous à 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 Cloud de Confiance .

Utiliser Gemini Omni Flash pour créer une vidéo à partir de la première et de la dernière image

Pour générer des vidéos avec Gemini Omni Flash :

REST

La génération de la vidéo peut prendre plus d'une minute. Vous pouvez choisir parmi plusieurs modes d'interaction en fonction de votre workflow :

  • Synchrones : sans état : générez une vidéo en une seule requête sans conserver l'état de l'interaction sur le serveur.
  • Synchrone : avec état : définissez store sur true pour conserver l'état de l'interaction, ce qui vous permet de récupérer le résultat ultérieurement ou de référencer l'ID d'interaction pour le montage vidéo multitour.
  • Synchronous : streaming avec état : définissez store et stream sur true pour recevoir les réflexions du modèle de manière incrémentielle à mesure qu'elles sont générées, suivies de la vidéo de sortie.
  • Asynchrone : définissez background sur true pour exécuter la génération de vidéo en arrière-plan et récupérer le résultat ultérieurement à l'aide de l'ID d'interaction.

Les interactions stockées et asynchrones sont conservées pendant 14 jours maximum.

Pour en savoir plus sur l'utilisation de l'API Gemini Omni Flash, consultez API Interactions.

Synchrone : sans état

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • MODEL_ID : chaîne représentant l'ID du modèle à utiliser. Voici les valeurs acceptées :
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
  • CLOUD_STORAGE_INPUT_URI : Chaîne représentant le bucket Cloud Storage contenant le contenu multimédia d'entrée. Exemple : "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI (facultatif) : chaîne représentant le bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si cette valeur n'est pas fournie, les octets vidéo sont renvoyés dans la réponse. Exemple : "gs://video-bucket/output/".
  • ASPECT_RATIO : (facultatif) chaîne représentant le format attendu de la vidéo de sortie. Si aucune valeur n'est fournie, le format est déduit de la requête. Voici les valeurs acceptées :
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION :

    Facultatif : chaîne représentant la résolution de sortie de la vidéo. Si aucune valeur n'est fournie, la sortie est définie par défaut sur 720p.

    gemini-omni-1.1-flash-preview accepte les valeurs suivantes :

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview n'est compatible qu'avec "720p".

  • DURATION : chaîne représentant la durée des fichiers vidéo générés. Les chaînes autorisées sont des nombres entiers compris entre 3 et 10, suivis de "s" pour les secondes. Par exemple, "10s".

Méthode HTTP et URL :

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

Corps JSON de la requête :

{
  "model": "MODEL_ID",
  "input": [
    {
      "type": "text",
      "text": "TEXT_PROMPT"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "image_to_video"
    }
  }
}

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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
La réponse contient une interaction qui inclut les réflexions du modèle et une vidéo de sortie.
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type":"thought",
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "uri":"gs://some/output_path/123.mp4",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction",
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

Synchrone : avec état

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • MODEL_ID : chaîne représentant l'ID du modèle à utiliser. Les valeurs suivantes sont acceptées :
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
  • CLOUD_STORAGE_INPUT_URI : Chaîne représentant le bucket Cloud Storage contenant le contenu multimédia d'entrée. Exemple : "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI (facultatif) : chaîne représentant le bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si cette valeur n'est pas fournie, les octets vidéo sont renvoyés dans la réponse. Exemple : "gs://video-bucket/output/".
  • ASPECT_RATIO : (facultatif) chaîne représentant le format attendu de la vidéo de sortie. Si aucune valeur n'est fournie, le format est déduit de la requête. Voici les valeurs acceptées :
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION :

    Facultatif : chaîne représentant la résolution de sortie de la vidéo. Si aucune valeur n'est fournie, la sortie est définie par défaut sur 720p.

    gemini-omni-1.1-flash-preview accepte les valeurs suivantes :

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview n'est compatible qu'avec "720p".

  • DURATION : chaîne représentant la durée des fichiers vidéo générés. Les chaînes autorisées sont des nombres entiers compris entre 3 et 10, suivis de "s" pour les secondes. Par exemple, "10s".

Méthode HTTP et URL :

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

Corps JSON de la requête :

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": false,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT"
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_INPUT_URI",
          "mime_type": "image/png"
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_INPUT_URI",
          "mime_type": "image/png"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ]
}

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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
La réponse contient une interaction qui inclut les réflexions du modèle et une vidéo de sortie.
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type":"thought",
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "uri":"gs://some/output_path/123.mp4",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction",
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}
Utilisez INTERACTION_ID pour obtenir la vidéo générée :

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • INTERACTION_ID : ID d'interaction de la requête asynchrone.

Méthode HTTP et URL :

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID

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

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID"

PowerShell

Exécutez la commande suivante :

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID" | Select-Object -Expand Content
La réponse est au format suivant :
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "5 second, 9:16 video. Use the image as the first frame."
        },
        {
          "type": "image",
          "uri": "gs://some/path",
          "mime_type": "image/png"
        }
      ]
    },
    {
      "type":"thought"
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "data":"VIDEO DATA",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction"
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

Synchrone : streaming avec état

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • MODEL_ID : chaîne représentant l'ID du modèle à utiliser. Voici les valeurs acceptées :
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
  • CLOUD_STORAGE_INPUT_URI : Chaîne représentant le bucket Cloud Storage contenant le contenu multimédia d'entrée. Exemple : "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI (facultatif) : chaîne représentant le bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si cette valeur n'est pas fournie, les octets vidéo sont renvoyés dans la réponse. Exemple : "gs://video-bucket/output/".
  • ASPECT_RATIO : (facultatif) chaîne représentant le format attendu de la vidéo de sortie. Si aucune valeur n'est fournie, le format est déduit de la requête. Voici les valeurs acceptées :
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION :

    Facultatif : chaîne représentant la résolution de sortie de la vidéo. Si aucune valeur n'est fournie, la sortie est définie par défaut sur 720p.

    gemini-omni-1.1-flash-preview accepte les valeurs suivantes :

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview n'est compatible qu'avec "720p".

  • DURATION : chaîne représentant la durée des fichiers vidéo générés. Les chaînes autorisées sont des nombres entiers compris entre 3 et 10, suivis de "s" pour les secondes. Par exemple, "10s".

Méthode HTTP et URL :

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

Corps JSON de la requête :

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": true,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT"
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_INPUT_URI",
          "mime_type": "image/png"
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_INPUT_URI",
          "mime_type": "image/png"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ]
}

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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
La réponse contient une interaction qui inclut les réflexions du modèle et une vidéo de sortie.
event: interaction.created
data: {"interaction":{"id":"INTERACTION_ID","status":"in_progress","object":"interaction","model":"gemini-omni-flash-preview"},"event_type":"interaction.created"}

event: interaction.status_update
data: {"interaction_id":"INTERACTION_ID","status":"in_progress","event_type":"interaction.status_update"}

event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"signature":"...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"mime_type":"video/mp4","uri":"gs://some/output_path/123.mp4","type":"video"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"INTERACTION_ID","status":"completed","usage":{"total_tokens":17812,"total_input_tokens":21,"input_tokens_by_modality":[{"modality":"text","tokens":21}],"total_output_tokens":17376,"output_tokens_by_modality":[{"modality":"video","tokens":17376}],"total_thought_tokens":415},"created":"2026-08-12T21:26:20Z","updated":"2026-08-12T21:26:20Z","event_id":"EVENT_ID","object":"interaction","model":"gemini-omni-flash-preview"},"event_id":"EVENT_ID","event_type":"interaction.completed"}

event: done
data: [DONE]
Utilisez INTERACTION_ID avec `?stream=true` pour diffuser l'interaction stockée et la vidéo générée :

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • INTERACTION_ID : ID d'interaction de la requête.

Méthode HTTP et URL :

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true

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

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true"

PowerShell

Exécutez la commande suivante :

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true" | Select-Object -Expand Content
La réponse est un flux d'événements envoyés par le serveur (SSE) dans un format semblable à celui-ci :
event: interaction.created
data: {"interaction":{"id":"INTERACTION_ID","status":"in_progress","object":"interaction","model":"gemini-omni-flash-preview"},"event_type":"interaction.created"}

event: interaction.status_update
data: {"interaction_id":"INTERACTION_ID","status":"in_progress","event_type":"interaction.status_update"}

event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"signature":"...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"mime_type":"video/mp4","uri":"gs://some/output_path/123.mp4","type":"video"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"INTERACTION_ID","status":"completed","usage":{"total_tokens":17664,"total_input_tokens":21,"input_tokens_by_modality":[{"modality":"text","tokens":21}],"total_output_tokens":17376,"output_tokens_by_modality":[{"modality":"video","tokens":17376}],"total_thought_tokens":267},"created":"2026-08-12T21:33:08Z","updated":"2026-08-12T21:33:08Z","event_id":"EVENT_ID","object":"interaction","model":"gemini-omni-flash-preview"},"event_id":"EVENT_ID","event_type":"interaction.completed"}

event: done
data: [DONE]

Asynchrone

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • MODEL_ID : chaîne représentant l'ID du modèle à utiliser. Les valeurs suivantes sont acceptées :
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
  • CLOUD_STORAGE_INPUT_URI : Chaîne représentant le bucket Cloud Storage contenant le contenu multimédia d'entrée. Exemple : "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI (facultatif) : chaîne représentant le bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si cette valeur n'est pas fournie, les octets vidéo sont renvoyés dans la réponse. Exemple : "gs://video-bucket/output/".
  • ASPECT_RATIO : (facultatif) chaîne représentant le format attendu de la vidéo de sortie. Si aucune valeur n'est fournie, le format est déduit de la requête. Voici les valeurs acceptées :
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION :

    Facultatif : chaîne représentant la résolution de sortie de la vidéo. Si aucune valeur n'est fournie, la sortie est définie par défaut sur 720p.

    gemini-omni-1.1-flash-preview accepte les valeurs suivantes :

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview n'est compatible qu'avec "720p".

  • DURATION : chaîne représentant la durée des fichiers vidéo générés. Les chaînes autorisées sont des nombres entiers compris entre 3 et 10, suivis de "s" pour les secondes. Par exemple, "10s".

Méthode HTTP et URL :

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

Corps JSON de la requête :

{
  "model": "MODEL_ID",
  "input": [
    {
      "background": true,
      "type": "text",
      "text": "TEXT_PROMPT"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "image_to_video"
    }
  }
}

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 TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
La réponse contient un ID d'interaction, que vous utiliserez pour obtenir la vidéo que vous avez générée.
{
  "id":"INTERACTION_ID",
  "status":"in_progress",
  "object":"interaction"
}
Utilisez ensuite INTERACTION_ID pour obtenir la vidéo générée :

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

  • PROJECT_ID : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
  • INTERACTION_ID : ID d'interaction de la requête asynchrone.

Méthode HTTP et URL :

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID

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

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID"

PowerShell

Exécutez la commande suivante :

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID" | Select-Object -Expand Content
La réponse est semblable à ce qui suit :
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "5 second, 9:16 video. Use the image as the first frame."
        },
        {
          "type": "image",
          "uri": "gs://some/path",
          "mime_type": "image/png"
        }
      ]
    },
    {
      "type":"thought"
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "data":"VIDEO DATA",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction"
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

Utiliser Veo pour créer une vidéo à partir de la première et de la dernière image

Les exemples suivants montrent comment spécifier la première et la dernière image d'une vidéo Veo :

Console

  1. Dans la console Cloud de Confiance , accédez à la page Agent Platform>Media Studio.

    Media Studio

  2. Cliquez sur Vidéo.

  3. Dans le menu Tâche, sélectionnez Image vers vidéo.

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

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

  6. Dans la section Images d'entrée, cliquez sur Démarrer pour importer une image pour la première image.

  7. Facultatif : cliquez sur Fin pour importer une image pour la dernière image.

  8. Facultatif : Ajustez les paramètres suivants :

    • Format : choisissez 16:9 ou 9:16.

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

    • Durée de la vidéo : sélectionnez une durée de vidéo dans le menu.

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

  9. 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 Google 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_ENTERPRISE=True

import time
from google import genai
from google.genai.types import GenerateVideosConfig, Image

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-3.1-generate-001",
    prompt="a hand reaches in and places a glass of milk next to the plate of cookies",
    image=Image(
        gcs_uri="gs://cloud-samples-data/generative-ai/image/cookies.png",
        mime_type="image/png",
    ),
    config=GenerateVideosConfig(
        aspect_ratio="16:9",
        last_frame=Image(
            gcs_uri="gs://cloud-samples-data/generative-ai/image/cookies-milk.png",
            mime_type="image/png",
        ),
        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

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 : chaîne représentant l'ID de votre projet Cloud de Confiance by S3NS .
    • MODEL_ID : chaîne représentant l'ID du modèle à utiliser. Utilisez l'une des options suivantes lorsque vous spécifiez la première ou la dernière image vidéo :
      • Veo 3 : veo-3.1-generate-001
      • Veo 3 : veo-3.1-fast-generate-001
    • TEXT_PROMPT : prompt textuel utilisé pour guider la génération de vidéos.
    • PATH_TO_FIRST_FRAME_IMAGE : chaîne représentant le chemin d'accès Cloud Storage à l'image de la première image. Par exemple : "gs://video-bucket/input/first-frame.jpg".
    • IMAGE_MIME_TYPE : chaîne représentant le type MIME de l'image d'entrée. Seules les images des types MIME suivants sont acceptées :
      • image/jpeg
      • image/png
    • PATH_TO_LAST_FRAME_IMAGE : chaîne représentant le chemin d'accès Cloud Storage à l'image de la dernière frame. Exemple : "gs://video-bucket/input/last-frame.jpg".
    • OUTPUT_STORAGE_URI : (facultatif) chaîne représentant le bucket Cloud Storage dans lequel stocker les vidéos de sortie. Si cette valeur n'est pas fournie, les octets vidéo sont renvoyés dans la réponse. Par exemple : "gs://video-bucket/output/".
    • RESPONSE_COUNT : nombre de fichiers vidéo à générer. La plage de valeurs acceptée est 1-4.
    • DURATION : entier représentant la durée des fichiers vidéo générés. Voici les valeurs acceptées pour chaque modèle :
      • Modèles Veo 2 : 5-8. La valeur par défaut est 8.
      • Modèles Veo 3 : 4, 6 ou 8. La valeur par défaut est 8.
    • 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" : n'autoriser que la génération de personnes et de visages d'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 0-4294967295.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
           "image": {
             "gcsUri": "PATH_TO_FIRST_FRAME_IMAGE,
             "mimeType": "IMAGE_MIME_TYPE"
           },
           "lastFrame:" {
             "gcsUri": "PATH_TO_LAST_FRAME_IMAGE,
             "mimeType": "IMAGE_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/MODEL_ID: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/MODEL_ID: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 requête de génération de vidéo.
    {
      "name":
      "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/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 Cloud de Confiance by S3NS .
    • 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