API de Veo en Vertex AI

Veo es el nombre del modelo que admite la generación de videos. Veo genera un video a partir de una instrucción de texto o una instrucción de imagen que proporciones.

Para explorar este modelo en la consola, consulta la tarjeta de modelo Video Generation en Model Garden.

Prueba Veo en Vertex AI (Vertex AI Studio)

Prueba Veo en un Colab

Solicitar acceso: Funciones experimentales

Modelos compatibles

La API de Veo es compatible con los siguientes modelos:

Solicitud HTTP

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://LOCATION}-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:predictLongRunning \

-d '{
  "instances": [
    {
      "prompt": string,
      // Optional. An image to guide video generation.
      "image": {
        // Union field can be only one of the following:
        "bytesBase64Encoded": string,
        "gcsUri": string,
        // End of list of possible types for union field.
        "mimeType": string
      }
    }
  ],
  "parameters": {
    "aspectRatio": string,
    "negativePrompt": string,
    "personGeneration": string,
    "sampleCount": integer,
    "seed": uint32,
    "storageUri": string,
    "durationSeconds": integer,
    "enhancePrompt": boolean
  }
}'

Usa los siguientes parámetros para el modelo Veo. Para obtener más información, consulta Genera videos con instrucciones de texto e imágenes con Veo.

Parámetro

prompt

string

Obligatorio para el texto a video.
Opcional si se proporciona una instrucción de imagen de entrada (imagen a video).

Es una cadena de texto que guía los primeros ocho segundos del video. Por ejemplo:

  • Una toma rápida a través de un área distópica y bulliciosa con letreros de neón brillantes, autos voladores y neblina, noche, destellos de lente e iluminación volumétrica
  • Un holograma de neón de un automóvil que conduce a la velocidad máxima, a la velocidad de la luz, con detalles increíbles y una iluminación volumétrica
  • Muchas medusas con manchas que pulsan bajo el agua. Sus cuerpos son transparentes y brillan en las profundidades del océano.
  • Primer plano extremo con una profundidad de campo baja de un charco en una calle que refleja una ciudad futurista y concurrida de Tokio con letreros de neón brillantes, noche y destellos del lente
  • Time-lapse de las auroras boreales bailando en el cielo ártico, estrellas titilando, paisaje cubierto de nieve
  • Un vaquero solitario monta su caballo por una llanura abierta en un hermoso atardecer, luz suave y colores cálidos

image

string

Obligatorio para convertir imágenes en videos.
Opcional si se proporciona una instrucción de texto (texto a video).

Una imagen de entrada para guiar la generación de videos. Recomendamos una imagen de 1280 × 720 píxeles o 720 × 1280 píxeles.

Uno de los siguientes:

  • Una cadena de bytes de imagen codificada en Base64
  • Un URI de bucket de Cloud Storage

Si la relación de aspecto de la imagen es diferente, esta se recorta con una herramienta de recorte central.

Si la relación de aspecto de la imagen es la misma, pero la resolución es más grande, se cambia el tamaño de la imagen.

durationSeconds

integer

Obligatorio. Es la duración de los archivos de video que deseas generar. Los valores de números enteros aceptados son 5-8. El valor predeterminado es 8.

negativePrompt

string

Opcional. Es una cadena de texto que describe todo lo que quieres evitar que genere el modelo. Por ejemplo:

  • iluminación cenital, colores brillantes
  • personas, animales
  • varios automóviles, viento
enhancePrompt

boolean

Opcional. Usa Gemini para mejorar tus instrucciones. Los valores aceptados son true o false. El valor predeterminado es true.

seed

uint32

Opcional. Un número que se solicita para hacer que los videos generados sean determinísticos. Si agregas un número de origen con tu solicitud sin cambiar otros parámetros, el modelo producirá los mismos videos.

El rango aceptado es de 0 a 4,294,967,295.

storageURI

string

Opcional. Es un URI de bucket de Cloud Storage para almacenar el video de salida, en el formato gs://BUCKET_NAME/SUBDIRECTORY. Si no se proporciona un bucket de Cloud Storage, se devuelven bytes de video codificados en base64 en la respuesta.

sampleCount

int

Opcional. Es la cantidad de imágenes de salida solicitadas. Los valores aceptados son 1-4.

aspectRatio

string

Opcional. Define la relación de aspecto del video generado. Una de las siguientes opciones:

  • 16:9 (predeterminada, horizontal)
  • 9:16 (vertical)

personGeneration

string

Opcional. Es la configuración de seguridad que controla si se permite la generación de personas o de rostros. Uno de los siguientes:

  • allow_adult (valor predeterminado): Permite la generación de adultos solamente.
  • dont_allow: No permite la inclusión de personas o rostros en las imágenes.
generateAudio

boolean

Necesario para veo-3.0-generate-preview. Genera audio para el video. Los valores aceptados son true o false.

generateAudio no es compatible con veo-2.0-generate-001.

Solicitud de muestra

Usa las siguientes solicitudes para enviar una solicitud de texto a video o de imagen a video:

Solicitud de generación de texto a video

REST

Para probar un mensaje de texto con la API de Vertex AI Veo, envía una solicitud POST al extremo del modelo de publicador.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_ID: El ID del modelo que se usará. Valores disponibles:
    • veo-2.0-generate-001 (lista de entidades permitidas de GA)
    • veo-3.0-generate-preview (Vista previa)
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de videos.
  • OUTPUT_STORAGE_URI: Opcional: Es el bucket de Cloud Storage para almacenar los videos de salida. Si no se proporcionan, los bytes de video se muestran en la respuesta. Por ejemplo: gs://video-bucket/output/
  • RESPONSE_COUNT: Es la cantidad de archivos de video que deseas generar. Valores de números enteros aceptados: de 1 a 4.
  • DURATION: Es la duración de los archivos de video que deseas generar. Los valores de números enteros aceptados son de 5 a 8.
  • Parámetros opcionales adicionales

    Usa las siguientes variables opcionales según tu caso de uso. Agrega algunos o todos los siguientes parámetros en el objeto "parameters": {}.

    "parameters": {
      "aspectRatio": "ASPECT_RATIO",
      "negativePrompt": "NEGATIVE_PROMPT",
      "personGeneration": "PERSON_SAFETY_SETTING",
      "sampleCount": RESPONSE_COUNT,
      "seed": SEED_NUMBER
    }
    • ASPECT_RATIO: Es una cadena. Opcional. Define la relación de aspecto de los videos generados. Valores: 16:9 (predeterminado, horizontal) o 9:16 (vertical).
    • NEGATIVE_PROMPT: Es una cadena. Opcional. Es una cadena de texto que describe lo que quieres evitar que genere el modelo.
    • PERSON_SAFETY_SETTING: Es una cadena. Opcional. Es la configuración de seguridad que controla si se permite la generación de personas o rostros. Valores:
      • allow_adult (valor predeterminado): Permite la generación de adultos solamente.
      • disallow: No permite la inclusión de personas ni rostros en las imágenes.
    • RESPONSE_COUNT: int. Opcional. Es la cantidad de imágenes de salida solicitadas. Valores: 1-4.
    • SEED_NUMBER: uint32. Opcional. Es un número que hace que los videos generados sean determinísticos. Especificar un número de origen con tu solicitud sin cambiar otros parámetros guía al modelo para que produzca los mismos videos. Valores: 0 - 4294967295.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "storageUri": "OUTPUT_STORAGE_URI",
    "sampleCount": "RESPONSE_COUNT"
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
Esta solicitud muestra un nombre de operación completo con un ID de operación único. Usa este nombre de operación completo para sondear el estado de la solicitud de generación de video.
{
  "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
}

Solicitud de conversión de imágenes en videos

REST

Para probar un mensaje de texto con la API de Vertex AI Veo, envía una solicitud POST al extremo del modelo de publicador.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_ID: El ID del modelo que se usará. Valores disponibles:
    • veo-2.0-generate-001 (lista de entidades permitidas de GA)
    • veo-3.0-generate-preview (Vista previa)
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de videos.
  • INPUT_IMAGE: Es una cadena de bytes codificada en Base64 que representa la imagen de entrada. Para garantizar la calidad, la imagen de entrada debe ser de 720p o superior (1280 x 720 píxeles) y tener una relación de aspecto de 16:9 o 9:16. Es posible que se cambie el tamaño de las imágenes de otras relaciones de aspecto o tamaños, o que se recorten en el centro durante el proceso de carga.
  • MIME_TYPE: Es el tipo de MIME de la imagen de entrada. Solo se admiten las imágenes de los siguientes tipos de MIME: image/jpeg o image/png.
  • OUTPUT_STORAGE_URI: Opcional: Es el bucket de Cloud Storage para almacenar los videos de salida. Si no se proporcionan, los bytes de video se muestran en la respuesta. Por ejemplo: gs://video-bucket/output/
  • RESPONSE_COUNT: Es la cantidad de archivos de video que deseas generar. Valores de números enteros aceptados: de 1 a 4.
  • DURATION: Es la duración de los archivos de video que deseas generar. Los valores de números enteros aceptados son de 5 a 8.
  • Parámetros opcionales adicionales

    Usa las siguientes variables opcionales según tu caso de uso. Agrega algunos o todos los siguientes parámetros en el objeto "parameters": {}.

    "parameters": {
      "aspectRatio": "ASPECT_RATIO",
      "negativePrompt": "NEGATIVE_PROMPT",
      "personGeneration": "PERSON_SAFETY_SETTING",
      "sampleCount": RESPONSE_COUNT,
      "seed": SEED_NUMBER
    }
    • ASPECT_RATIO: Es una cadena. Opcional. Define la relación de aspecto de los videos generados. Valores: 16:9 (predeterminado, horizontal) o 9:16 (vertical).
    • NEGATIVE_PROMPT: Es una cadena. Opcional. Es una cadena de texto que describe lo que quieres evitar que genere el modelo.
    • PERSON_SAFETY_SETTING: Es una cadena. Opcional. Es la configuración de seguridad que controla si se permite la generación de personas o rostros. Valores:
      • allow_adult (valor predeterminado): Permite la generación de adultos solamente.
      • disallow: No permite la inclusión de personas ni rostros en las imágenes.
    • RESPONSE_COUNT: int. Opcional. Es la cantidad de imágenes de salida solicitadas. Valores: 1-4.
    • SEED_NUMBER: uint32. Opcional. Es un número que hace que los videos generados sean determinísticos. Especificar un número de origen con tu solicitud sin cambiar otros parámetros guía al modelo para que produzca los mismos videos. Valores: 0 - 4294967295.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "image": {
        "bytesBase64Encoded": "INPUT_IMAGE",
        "mimeType": "MIME_TYPE"
      }
    }
  ],
  "parameters": {
    "storageUri": "OUTPUT_STORAGE_URI",
    "sampleCount": RESPONSE_COUNT
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
Esta solicitud muestra un nombre de operación completo con un ID de operación único. Usa este nombre de operación completo para sondear el estado de la solicitud de generación de video.
{
  "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
}

Sondea el estado de la operación de larga duración de generación de videos

Verifica el estado de la operación de larga duración de generación de video.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El Google Cloud ID de tu proyecto.
  • MODEL_ID: El ID del modelo que se usará. Valores disponibles:
    • veo-2.0-generate-001 (lista de entidades permitidas de GA)
    • veo-3.0-generate-preview (Vista previa)
  • OPERATION_ID: El ID de operación único que se muestra en la solicitud original de generación de video.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
Esta solicitud muestra información sobre la operación, incluido si aún se está ejecutando o si se completó.

Cuerpo de la respuesta (generar solicitud de video)

Si envías una solicitud de texto a video o de imagen a video, se muestra la siguiente respuesta:

{
  "name": string
}
Elemento de la respuesta Descripción
name Es el nombre completo de la operación de larga duración que comienza después de que se envía una solicitud de generación de video.

Respuesta de muestra (solicitud de generación de video)

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

Cuerpo de la respuesta (operación de sondeo de larga duración)

Si sondeas el estado de la operación de larga duración de la generación de videos originales, se muestra la siguiente respuesta:

{
   "name": string,
   "done": boolean,
   "response":{
      "@type":"type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse",
      "generatedSamples":[
         {
            "video":
            {
               "uri": string,
               "encoding": string
            }
         },
         {
            "video":
            {
               "uri": string,
               "encoding": string
            }
         },
         {
            "video":
            {
               "uri": string,
               "encoding": string
            }
         },
         {
            "video":
            {
               "uri": string,
               "encoding": string
            }
         },
      ]
   }
}
Elemento de la respuesta Descripción
name Es el nombre completo de la operación de larga duración que comienza después de que se envía una solicitud de generación de video.
done Es un valor booleano que indica si la operación se completó.
response El cuerpo de la respuesta de la operación de larga duración.
generatedSamples Es un array de los objetos de muestra de video generados.
video El video generado.
uri Es el URI de Cloud Storage del video generado.
encoding El tipo de codificación de video.

Respuesta de muestra (operación de sondeo de larga duración)

{
   "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID",
   "done":true,
   "response":{
      "@type":"type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse",
      "generatedSamples":[
         {
            "video":{
               "uri":"gs://STORAGE_BUCKET/TIMESTAMPED_SUBDIRECTORY/sample_0.mp4",
               "encoding":"video/mp4"
            }
         },
         {
            "video":{
               "uri":"gs://STORAGE_BUCKET/TIMESTAMPED_SUBDIRECTORY/sample_1.mp4",
               "encoding":"video/mp4"
            }
         },
         {
            "video":{
               "uri":"gs://STORAGE_BUCKET/TIMESTAMPED_SUBDIRECTORY/sample_2.mp4",
               "encoding":"video/mp4"
            }
         },
         {
            "video":{
               "uri":"gs://STORAGE_BUCKET/TIMESTAMPED_SUBDIRECTORY/sample_3.mp4",
               "encoding":"video/mp4"
            }
         }
      ]
   }
}

Más información

¿Qué sigue?