Generare video dal primo e dall'ultimo frame

Puoi generare video di Veo su Vertex AI specificando il primo e l'ultimo fotogramma del video. Le interfacce supportate includono la console Google Cloud e l'API Vertex AI.

Per ulteriori informazioni su come scrivere prompt di testo efficaci per la generazione di video, consulta la guida ai prompt di Veo.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

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

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. Configura l'autenticazione per il tuo ambiente.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

    Creare un video a partire dal primo e dall'ultimo fotogramma

    Gli esempi seguenti mostrano come specificare il primo e l'ultimo fotogramma di un video di Veo:

    Console

    1. Nella console Google Cloud , vai alla pagina Vertex AI > Media Studio.

      Media Studio

    2. Fai clic su Video. Viene visualizzata la pagina Video Media Studio.

    3. Nel riquadro Impostazioni, configura le seguenti impostazioni:

      • Modello: seleziona Veo 2 veo-2.0-generate-001.
      • Proporzioni: scegli 16:9 o 9:16.
      • Numero di risultati: regola il cursore o inserisci un valore compreso tra 1 e 4.
      • Durata video: seleziona una durata compresa tra 5 secondi e 8 secondi.
      • Directory di output: fai clic su Sfoglia per creare o selezionare un bucket Cloud Storage in cui archiviare i file generati.
    4. Nella casella Scrivi il tuo prompt, fai clic su Carica. Nella finestra di dialogo visualizzata, seleziona un'immagine per il primo fotogramma.

      Aggiungi frame finale (facoltativo) viene visualizzato accanto all'immagine caricata.

    5. (Facoltativo) Aggiungi un frame finale facendo clic su Aggiungi frame finale. Nella finestra di dialogo visualizzata, seleziona un'immagine per l'ultimo fotogramma.

    6. Nella casella Scrivi il prompt, inserisci il prompt di testo che descrive i video da generare.

    7. Fai clic su Genera.

    Python

    Installa

    pip install --upgrade google-genai

    Per saperne di più, consulta la documentazione di riferimento dell'SDK.

    Imposta le variabili di ambiente per utilizzare l'SDK Gen AI 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_VERTEXAI=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-2.0-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

    Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.

    Per saperne di più sull'API Veo, consulta la documentazione dell'API Veo su Vertex AI.

    1. Utilizza il seguente comando per inviare una richiesta di generazione di video. Questa richiesta avvia un'operazione a lunga esecuzione e archivia l'output in un bucket Cloud Storage specificato.

      Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

      • PROJECT_ID: il tuo Google Cloud ID progetto.
      • TEXT_PROMPT: Il prompt di testo utilizzato per guidare la generazione del video.
      • PATH_TO_FIRST_FRAME_IMAGE: Il percorso Cloud Storage dell'immagine del primo fotogramma.
      • IMAGE_MIME_TYPE: Il tipo MIME dell'immagine di input. Solo uno dei seguenti:
        • image/jpeg
        • image/png
      • PATH_TO_LAST_FRAME_IMAGE: il percorso Cloud Storage dell'immagine dell'ultimo fotogramma.
      • OUTPUT_STORAGE_URI: (Facoltativo) il bucket Cloud Storage in cui archiviare i video di output. Se non vengono forniti, i byte video vengono restituiti nella risposta. Ad esempio: gs://video-bucket/output/.
      • RESPONSE_COUNT: Il numero di file video che vuoi generare. Valori interi accettati: 1-4.
      • DURATION: La durata dei file video che vuoi generare. I valori interi accettati sono compresi tra 5 e 8.
      • Parametri facoltativi aggiuntivi

        Utilizza le seguenti variabili facoltative a seconda del tuo caso d'uso. Aggiungi alcuni o tutti i seguenti parametri nell'oggetto "parameters": {}.

        "parameters": {
          "aspectRatio": "ASPECT_RATIO",
          "negativePrompt": "NEGATIVE_PROMPT",
          "personGeneration": "PERSON_SAFETY_SETTING",
          "sampleCount": RESPONSE_COUNT,
          "seed": SEED_NUMBER
        }
        • ASPECT_RATIO: stringa. Facoltativo. Definisce le proporzioni dei video generati. Valori: 16:9 (predefinito, orizzontale) o 9:16 (verticale).
        • NEGATIVE_PROMPT: stringa. Facoltativo. Una stringa di testo che descrive ciò che vuoi scoraggiare il modello a generare.
        • PERSON_SAFETY_SETTING: stringa. Facoltativo. L'impostazione di sicurezza che controlla se è consentita la generazione di persone o volti. Valori:
          • allow_adult (valore predefinito): consente la generazione solo per adulti.
          • disallow: Non consente l'inclusione di persone o volti nelle immagini.
        • RESPONSE_COUNT: int. Facoltativo. Il numero di immagini di output richieste. Valori: 1-4.
        • SEED_NUMBER: uint32. Facoltativo. Un numero per rendere deterministici i video generati. Se specifichi un numero seed nella richiesta senza modificare altri parametri, il modello genererà gli stessi video. Valori: 0 - 4294967295.

      Metodo HTTP e URL:

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

      Corpo JSON della richiesta:

      {
        "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
        }
      }
      

      Per inviare la richiesta, scegli una di queste opzioni:

      curl

      Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

      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-001:predictLongRunning"

      PowerShell

      Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

      $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-001:predictLongRunning" | Select-Object -Expand Content
      Questa richiesta restituisce un nome completo dell'operazione con un ID operazione univoco. Utilizza questo nome completo dell'operazione per eseguire il polling dello stato della richiesta di generazione del video.
      {
        "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
      }
      

    2. (Facoltativo) Controlla lo stato dell'operazione a lunga esecuzione di generazione del video.

      Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

      • PROJECT_ID: il tuo Google Cloud ID progetto.
      • MODEL_ID: l'ID modello da utilizzare. Valori disponibili:
        • veo-2.0-generate-001 (GA)
        • veo-3.0-generate-preview (anteprima)
      • OPERATION_ID: L'ID operazione univoco restituito nella richiesta originale di generazione del video.

      Metodo HTTP e URL:

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

      Corpo JSON della richiesta:

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

      Per inviare la richiesta, scegli una di queste opzioni:

      curl

      Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

      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

      Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

      $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
      Questa richiesta restituisce informazioni sull'operazione, incluso se è ancora in esecuzione o è stata completata.

    Passaggi successivi