根據第一個和最後一個畫面生成影片

只要指定影片的第一個和最後一個影格,就能在 Vertex AI 上生成 Veo 影片。支援的介面包括 Google Cloud 控制台和 Vertex AI API。

如要進一步瞭解如何撰寫有效的影片生成文字提示,請參閱 Veo 提示指南

事前準備

  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. 為環境設定驗證方法。

    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

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

    從第一個和最後一個畫面製作影片

    以下範例說明如何指定 Veo 影片的第一個和最後一個影格:

    控制台

    1. 在 Google Cloud 控制台中,前往「Vertex AI」>「Media Studio」頁面。

      媒體工作室

    2. 按一下「影片」。系統隨即會顯示「影片媒體工作室」頁面。

    3. 在「設定」窗格中,進行下列設定:

      • 型號:選取「Veo 2」veo-2.0-generate-001
      • 顯示比例:選擇「16:9」或「9:16」
      • 結果數量:調整滑桿或輸入介於 14 之間的值。
      • 影片長度:選取 5 秒8 秒之間的長度。
      • 輸出目錄:按一下「瀏覽」,建立或選取Cloud Storage bucket,用於儲存產生的檔案。
    4. 在「輸入提示」方塊中,按一下「上傳」。在顯示的對話方塊中,選取第一個影格的圖片。

      上傳的圖片旁會顯示「新增結尾影格 (選用)」

    5. 選用:按一下「新增結尾影格」,新增結尾影格。在顯示的對話方塊中,選取最後一格的圖片。

    6. 在「撰寫提示」方塊中,輸入描述要生成影片的文字提示。

    7. 按一下「生成」

    Python

    安裝

    pip install --upgrade google-genai

    詳情請參閱 SDK 參考說明文件

    設定環境變數,透過 Vertex AI 使用 Gen AI SDK:

    # 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

    設定環境後,即可使用 REST 測試文字提示。下列範例會將要求傳送至發布商模型端點。

    如要進一步瞭解 Veo API,請參閱 Vertex AI 上的 Veo API

    1. 使用下列指令傳送影片生成要求。這項要求會啟動長時間執行的作業,並將輸出內容儲存至您指定的 Cloud Storage bucket。

      使用任何要求資料之前,請先替換以下項目:

      • PROJECT_ID:您的 Google Cloud 專案 ID
      • TEXT_PROMPT:用於引導影片生成的文字提示。
      • PATH_TO_FIRST_FRAME_IMAGE:第一個影格圖片的 Cloud Storage 路徑。
      • IMAGE_MIME_TYPE:輸入圖片的 MIME 類型。下列其中一項:
        • image/jpeg
        • image/png
      • PATH_TO_LAST_FRAME_IMAGE:最後一幀影像的 Cloud Storage 路徑。
      • OUTPUT_STORAGE_URI:選用:用於儲存輸出影片的 Cloud Storage bucket。如果未提供,回應中會傳回影片位元組。例如:gs://video-bucket/output/
      • RESPONSE_COUNT:要生成的影片檔案數量。 接受的整數值:1 到 4。
      • DURATION:要生成的影片檔案長度。 可接受的整數值為 5 至 8。
      • 其他選用參數

        請視用途使用下列選用變數。在 "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: 選用:描述生成影片顯示比例的字串值。你可以使用下列值:
          • "16:9" 橫向
          • "9:16" 直向

          預設值為 "16:9"

        • NEGATIVE_PROMPT:選用:字串值,說明您要禁止模型生成哪些內容。
        • PERSON_SAFETY_SETTING: 選用:控制生成人物或臉部安全設定的字串值。你可以使用下列值:
          • "allow_adult":只允許生成成人人物和臉孔。
          • "disallow":不會生成人物或臉部。

          預設值為 "allow_adult"

        • RESOLUTION: 選用:控制生成影片解析度的字串值。僅支援 Veo 3 模型。你可以使用下列值:
          • "720p"
          • "1080p"

          預設值為 "720p"

        • RESPONSE_COUNT: 選用。整數值,說明要生成的影片數量。 可接受的值範圍為 14
        • SEED_NUMBER: 選用。模型用來生成確定性影片的 uint32 值。在要求中指定種子號碼,但不變更其他參數,即可引導模型產生相同的影片。可接受的值範圍為 04294967295

      HTTP 方法和網址:

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

      JSON 要求主體:

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

      如要傳送要求,請選擇以下其中一個選項:

      curl

      將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

      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

      將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

      $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
      這項要求會傳回完整作業名稱和專屬作業 ID。使用這個完整作業名稱輪詢影片生成要求的狀態。
      {
        "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
      }
      

    2. 選用:檢查影片生成長時間執行作業的狀態。

      使用任何要求資料之前,請先替換以下項目:

      • PROJECT_ID:您的 Google Cloud 專案 ID
      • MODEL_ID:要使用的模型 ID。
      • OPERATION_ID:原始生成影片要求中傳回的專屬作業 ID。

      HTTP 方法和網址:

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

      JSON 要求主體:

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

      如要傳送要求,請選擇以下其中一個選項:

      curl

      將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

      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

      將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

      $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
      這項要求會傳回作業相關資訊,包括作業是否仍在執行中或已完成。

    後續步驟