最初のフレームと最後のフレームから動画を生成する

動画の最初と最後のフレームを指定することで、Veo on Vertex AI 動画を生成できます。サポートされているインターフェースには、 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 に指定した認証情報を使用します。

      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.

    詳細については、 Google Cloud 認証ドキュメントの 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 バケットを作成または選択します。
    4. [プロンプトを入力] ボックスで、 [アップロード] をクリックします。表示されたダイアログで、最初のフレームの画像を選択します。

      アップロードした画像の横に [Add ending frame (Optional)] が表示されます。

    5. 省略可: [終了フレームを追加] をクリックして、終了フレームを追加します。表示されたダイアログで、最後のフレームの画像を選択します。

    6. [Write your prompt] ボックスに、生成する動画の説明となるテキスト プロンプトを入力します。

    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 バケットに出力が保存されます。

      リクエストのデータを使用する前に、次のように置き換えます。

      • PROJECT_ID: 実際の Google Cloud プロジェクト ID
      • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
      • PATH_TO_FIRST_FRAME_IMAGE: 最初のフレームの画像への Cloud Storage パス。
      • IMAGE_MIME_TYPE: 入力画像の MIME タイプ。次のいずれか 1 つのみ。
        • image/jpeg
        • image/png
      • PATH_TO_LAST_FRAME_IMAGE: 最後のフレームの画像への Cloud Storage パス。
      • OUTPUT_STORAGE_URI: 省略可。出力動画を保存する Cloud Storage バケット。指定しない場合、動画のバイト数がレスポンスで返されます。例: gs://video-bucket/output/
      • RESPONSE_COUNT: 生成する動画ファイルの数。指定できるのは整数値(1 ~ 4)です。
      • DURATION: 生成する動画ファイルの長さ。指定できる整数値は 5 ~ 8 です。
      • その他のオプション パラメータ

        ユースケースに応じて、次のオプションの変数を使用します。"parameters": {} オブジェクトに次のパラメータの一部またはすべてを追加します。

        "parameters": {
          "aspectRatio": "ASPECT_RATIO",
          "negativePrompt": "NEGATIVE_PROMPT",
          "personGeneration": "PERSON_SAFETY_SETTING",
          "sampleCount": RESPONSE_COUNT,
          "seed": SEED_NUMBER
        }
        • ASPECT_RATIO: 文字列。省略可。生成される動画のアスペクト比を定義します。値: 16:9(デフォルト、横向き)または 9:16(縦向き)。
        • NEGATIVE_PROMPT: 文字列。省略可。モデルが生成しないようにする内容を記述したテキスト文字列。
        • PERSON_SAFETY_SETTING: 文字列。省略可。人物や顔の生成を許可するかどうかを制御する安全性設定。値:
          • allow_adult(デフォルト値): 成人のみの生成を許可します。
          • disallow: 画像に人物や顔が含まれないようにします。
        • RESPONSE_COUNT: 整数、省略可。リクエストされた出力画像の数。値: 14
        • SEED_NUMBER: uint32。省略可。生成される動画を確定するための数値。他のパラメータを変更せずにリクエストにシード番号を指定すると、モデルは同じ動画を生成するように導かれます。値: 04294967295

      HTTP メソッドと URL:

      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。使用可能な値:
        • veo-2.0-generate-001(GA)
        • veo-3.0-generate-preview(プレビュー)
      • OPERATION_ID: 元の動画生成リクエストで返された一意のオペレーション ID。

      HTTP メソッドと URL:

      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
      このリクエストは、オペレーションがまだ実行中か完了しているかなど、オペレーションに関する情報を返します。

    次のステップ