Vertex AI API の Veo

Veo は、動画生成をサポートするモデルの名前です。Veo は、ユーザーが指定したテキスト プロンプトまたは画像プロンプト(/products#product-launch-stages)から動画を生成します。

コンソールでこのモデルを調べるには、Model Garden に移動して Video Generation モデルカードを確認します。

Vertex AI で Veo を試す(Vertex AI Studio)

Colab で Veo を試す

アクセス権のリクエスト: 試験運用版機能

サポートされているモデル

モデル モデル ID
動画生成 veo-2.0-generate-001

HTTP リクエスト

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

リクエストの本文

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

Veo モデルには、次のパラメータを使用します。詳細については、Veo を使用してテキスト プロンプトと画像プロンプトを使用して動画を生成するをご覧ください。

パラメータ 説明 タイプ 有効な値と説明
image 必須(画像から動画)
テキスト プロンプトを指定する場合は省略可(テキストから動画)

動画生成をガイドする画像入力。
文字列
  1. base64 エンコードされた画像バイト文字列、または
  1. Cloud Storage バケット URI

推奨: 1,280 x 720 ピクセルまたは 720 x 1,280 ピクセル

画像のアスペクト比が異なる場合は、中央切り抜きツールを使用して画像が切り抜かれます。
画像のアスペクト比は同じでも解像度が大きい場合は、画像のサイズが変更されます。
prompt 必須(テキストから動画)
入力画像プロンプトが指定されている場合(画像から動画)は省略可

動画の最初の 8 秒間(veo-2.0-generate-001)をガイドするテキスト文字列。
文字列 動画生成をガイドする任意のテキスト文字列。次に例を示します。

  • ネオンサイン、空飛ぶ車、霧、夜、レンズのフレア、ボリューメトリック ライティングが輝く、ディストピア的な大都市の様子を高速で撮影したショット
  • 最高速度で走行する車のネオン ホログラム、光速、映画のようなディテール、ボリューメトリック ライティング
  • 水中で脈動する多数の斑点のあるクラゲ。体は透明であり、深海で光ります
  • 水たまりができている道を、ごく低い目線から極端なクローズアップで捉えた様子。どこか未来を感じさせる忙しない東京の街の雰囲気を、眩いネオン看板や、レンズのフレアが瞬く夜の情景に反映する。
  • 北極の空を舞うオーロラ、きらめく星、雪に覆われた風景をタイムラプスで撮影
  • 柔らかな光、暖かな色の美しい夕陽が降り注ぐ中、1 人のカウボーイが広々とした平原で馬にまたがっている
durationSeconds 必須
生成する動画ファイルの長さ。
integer 指定できる整数値は 5 ~ 8 です。デフォルトは 8 です。
negativePrompt 省略可
モデルによる生成の対象から除外したい内容を説明するテキスト文字列。
文字列 生成された動画から除外するようモデルに指示する任意のテキスト文字列。次に例を示します。

  • 天井の照明、明るい色
  • 人物、動物
  • 複数の車、風
EnhancePrompt の使用 省略可
Gemini を使用してプロンプトを強化します。
ブール値 指定できる値は yes または no です。デフォルトは yes です。
seed 省略可
生成される動画を確定するためリクエストする数値。

他のパラメータを変更せずにリクエストにシード番号を追加すると、モデルは同じ動画を生成します。
uint32 0 - 4,294,967,295
storageURI 省略可
出力動画を保存するための Cloud Storage バケットの URI。

指定しない場合、レスポンスで base64 エンコードされた動画バイトが返されます。
文字列 生成された動画を保存する Cloud Storage の場所。パターン: gs://BUCKET_NAME/SUBDIRECTORY
sampleCount 省略可
リクエストされた出力画像の数。
整数 1~4
aspectRatio 省略可
生成される動画のアスペクト比を定義します。
文字列 16:9(デフォルト、横向き)
9:16(縦向き)
personGeneration 省略可
人物や顔の生成を許可するかどうかを制御する安全設定。
文字列 allow_adult(デフォルト値): 成人のみの生成を許可します
dont_allow: 画像に人物や顔を含めることを禁止します

リクエストの例

テキストから動画へのリクエストまたは画像から動画へのリクエストを送信するには、次のリクエストを使用します。

Text-to-Video 生成リクエスト

REST

Vertex AI Veo API を使用してテキスト プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • MODEL_ID: 使用するモデル ID。使用可能な値:
    • veo-2.0-generate-001(一般提供の許可リスト)
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • 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/MODEL_ID:predictLongRunning

リクエストの本文(JSON):

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "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/MODEL_ID: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/MODEL_ID:predictLongRunning" | Select-Object -Expand Content
このリクエストは、一意のオペレーション ID を含む完全なオペレーション名を返します。この完全なオペレーション名を使用して、動画生成リクエストのステータスをポーリングします。
{
  "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
}

画像から動画への生成リクエスト

REST

Vertex AI Veo API を使用してテキスト プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • MODEL_ID: 使用するモデル ID。使用可能な値:
    • veo-2.0-generate-001(一般提供の許可リスト)
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • INPUT_IMAGE: 入力画像を表す Base64 エンコードのバイト文字列。品質を確保するには、入力画像は 720p 以上(1280 x 720 ピクセル)で、アスペクト比が 16:9 または 9:16 である必要があります。他のアスペクト比やサイズの画像は、アップロード プロセス中にサイズ変更されるか中央で切り抜かれることがあります。
  • MIME_TYPE: 入力画像の MIME タイプ。MIME タイプが image/jpeg または image/png の画像のみがサポートされています。
  • 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/MODEL_ID:predictLongRunning

リクエストの本文(JSON):

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "image": {
        "bytesBase64Encoded": "INPUT_IMAGE",
        "mimeType": "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/MODEL_ID: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/MODEL_ID:predictLongRunning" | Select-Object -Expand Content
このリクエストは、一意のオペレーション ID を含む完全なオペレーション名を返します。この完全なオペレーション名を使用して、動画生成リクエストのステータスをポーリングします。
{
  "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
}

動画生成の長時間実行オペレーションのステータスをポーリングする

動画生成の長時間実行オペレーションのステータスを確認します。

REST

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • MODEL_ID: 使用するモデル ID。使用可能な値:
    • veo-2.0-generate-001(一般提供の許可リスト)
  • 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
このリクエストは、オペレーションがまだ実行中か完了しているかなど、オペレーションに関する情報を返します。

レスポンスの本文(動画生成リクエスト)

テキストから動画または画像から動画へのリクエストを送信すると、次のレスポンスが返されます。

{
  "name": string
}
レスポンス要素 説明
name 動画生成リクエストの送信後に開始される長時間実行オペレーションの完全なオペレーション名。

レスポンスの例(動画生成リクエスト)

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

レスポンスの本文(長時間実行オペレーションのポーリング)

元の動画生成の長時間実行オペレーションのステータスをポーリングすると、次のレスポンスが返されます。

{
   "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
            }
         },
      ]
   }
}
レスポンス要素 説明
name 動画生成リクエストの送信後に開始される長時間実行オペレーションの完全なオペレーション名。
done オペレーションが完了したかどうかを示すブール値。
response 長時間実行オペレーションのレスポンス本文。
generatedSamples 生成された動画サンプル オブジェクトの配列。
video 生成された動画。
uri 生成された動画の Cloud Storage URI。
encoding 動画エンコードのタイプ。

レスポンスの例(長時間実行オペレーションをポーリング)

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

詳細

次のステップ