Usa Veo para extender videos

Puedes usar Veo en Gemini Enterprise Agent Platform para extender videos de 1 a 30 segundos de duración. Puedes extender videos con la consola de Cloud de Confiance o la API de Agent Platform.

Los siguientes modelos admiten la extensión de videos:

Si deseas obtener información para escribir instrucciones de texto eficaces para la generación de videos, consulta la guía de instrucciones de Veo.

Antes de comenzar

  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.

    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

  3. Configura la autenticación para tu entorno.

    Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:

    Console

    Cuando usas la consola de Cloud de Confiance para acceder a los servicios y las APIs de Cloud de Confiance by S3NS , no necesitas configurar la autenticación.

    REST

    Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .

Limitaciones

Los videos de entrada están sujetos a las siguientes limitaciones cuando se usa la extensión de Veo:

  • El archivo de entrada debe ser MP4.
  • La duración debe ser de 1 a 30 segundos.
  • La velocidad de fotogramas debe ser de 24 fotogramas por segundo.
  • La resolución debe ser 720p, 1080p o 4K.
  • La relación de aspecto de los videos de entrada puede ser de 9:16 o 16:9.

Los videos de salida están sujetos a las siguientes limitaciones:

  • El archivo de salida es MP4.
  • La duración extendida es de 7 segundos.
  • La velocidad de fotogramas es de 24 fotogramas por segundo.
  • La resolución puede ser de 720p, 1080p o 4K.
  • La relación de aspecto de los videos de salida puede ser de 9:16 o 16:9.

Cómo extender un video

En los siguientes ejemplos, se muestra cómo puedes extender un video de Veo:

Console

  1. En la consola de Cloud de Confiance , ve a la página Agent Platform > Media Studio.

    Media Studio

  2. Haz clic en Video.

  3. En el menú Tarea, selecciona Extensión de video.

  4. En el menú Modelo, selecciona un modelo de las opciones que se muestran.

  5. En la sección Input video, haz clic en Add.

  6. En el cuadro Instrucción, ingresa una instrucción de texto que describa los videos que se generarán.

  7. Opcional: Ajusta los siguientes parámetros:

    • Cantidad de resultados: Ajusta el control deslizante o ingresa un valor entre 1 y 4.

    • Duración del video: Selecciona una duración del video en el menú.

    • Directorio de salida: Haz clic en Explorar para crear o seleccionar un bucket de Cloud Storage en el que se almacenarán los archivos generados.

  8. Haz clic en Ejecutar.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa de Google con 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, Video

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-preview",
    prompt="a butterfly flies in and lands on the flower",
    video=Video(
        uri="gs://cloud-samples-data/generative-ai/video/flower.mp4",
        mime_type="video/mp4",
    ),
    config=GenerateVideosConfig(
        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

Para obtener más información sobre la API de Veo, consulta los siguientes recursos:

  1. Usa el siguiente comando para enviar una solicitud de generación de video. Esta solicitud inicia una operación de larga duración y almacena el resultado en un bucket de Cloud Storage que especifiques.

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

    • PROJECT_ID: Es una cadena que representa el ID de tu proyecto de Cloud de Confiance by S3NS .
    • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Usa una de las siguientes opciones cuando especifiques el primer o el último fotograma de un video:
      • Veo 2: veo-2.0-generate-001
      • Veo 3: veo-3.1-generate-001
      • Veo 3: veo-3.1-fast-generate-001
    • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de video.
    • PATH_TO_VIDEO: Es una cadena que representa la ruta de acceso de Cloud Storage al video de Veo que deseas extender. Por ejemplo: "gs://video-bucket/input/veo-video.mp4"
    • OUTPUT_STORAGE_URI: Opcional: Es una cadena que representa el bucket de Cloud Storage en el que se almacenarán los videos de salida. Si no se proporciona, los bytes del video se devuelven en la respuesta. Por ejemplo: "gs://video-bucket/output/"
    • RESPONSE_COUNT: Es la cantidad de archivos de video que se generarán. El rango de valores aceptado es de 1 a 4.
    • 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",
        // "resolution": RESOLUTION, // Veo 3 models only
        "sampleCount": RESPONSE_COUNT,
        "seed": SEED_NUMBER
      }
      • ASPECT_RATIO: Opcional: Es un valor de cadena que describe la relación de aspecto de los videos generados. Puedes usar los siguientes valores:
        • "16:9" para horizontal
        • "9:16" para vertical

        El valor predeterminado es "16:9".

      • NEGATIVE_PROMPT: Opcional: Es un valor de cadena que describe el contenido que deseas evitar que genere el modelo.
      • PERSON_SAFETY_SETTING: Opcional: Es un valor de cadena que controla el parámetro de configuración de seguridad para generar personas o rostros. Puedes usar los siguientes valores:
        • "allow_adult": Solo permite la generación de personas y rostros adultos.
        • "disallow": No genera personas ni rostros.

        El valor predeterminado es "allow_adult".

      • RESOLUTION: Opcional: Es un valor de cadena que controla la resolución del video generado. Solo es compatible con los modelos de Veo 3. Puedes usar los siguientes valores:
        • "720p"
        • "1080p"
        • "4k" (solo modelos de la versión preliminar de Veo 3.1)

        El valor predeterminado es "720p".

      • RESPONSE_COUNT: Opcional. Es un valor entero que describe la cantidad de videos que se generarán. El rango de valores aceptado es de 1 a 4.
      • SEED_NUMBER: Opcional. Es un valor uint32 que el modelo usa para generar videos 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. El rango de valores aceptado es de 0 a 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",
           "video": {
             "gcsUri": "PATH_TO_VIDEO",
             "mimeType": "video/mp4"
           }
        }
      ],
      "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 devuelve 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"
    }
    

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

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

    • PROJECT_ID: Tu Cloud de Confiance by S3NS ID del proyecto.
    • MODEL_ID: Es el ID del modelo que se usará.
    • OPERATION_ID: Es el ID de operación único que se devolvió 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 devuelve información sobre la operación, incluido si la operación aún se está ejecutando o si ya finalizó.

¿Qué sigue?