Gemini で動画から画像を生成する

Gemini を使用すると、動画から画像を生成できます。これは、動画のサムネイルの画像を作成する場合に便利です。インターフェースとして コンソール Cloud de Confiance と Agent Platform API がサポートされています。

次の Gemini モデルは、動画からの画像生成をサポートしています。

クリックして、サポートされているモデルを開く

動画から画像を生成する

以下に、Agent Studio または API を使用して動画から画像を生成する方法を示します。

プロンプトのベスト プラクティスの詳細については、マルチモーダル プロンプトを設計するをご覧ください。

Console

Gemini を使用して動画から画像を生成するには、次の操作を行います。

  1. コンソールの [Agent Platform] セクションで、 Cloud de Confiance [**Agent Studio**] > [**画像**] に移動します。

    Vertex AI Studio に移動

  2. [**モデル設定**] で、表示されたモデルのいずれかを選択します。

  3. [Prompt] テキスト領域で、 [add] [add] ボタンをクリックし、 動画ファイルのソースを選択します。

    Upload

    アップロードするファイルを選択して [開く] をクリックします。

    URL

    使用するファイルの URL を入力し、[挿入] をクリックします。

    YouTube

    使用する YouTube 動画の URL を入力し、[挿入] をクリックします。

    公開されている動画や、 Cloud de Confiance コンソールのログインに使用したアカウントが所有する動画を使用できます。

    Cloud Storage

    バケットを選択してから、バケット内のインポートするファイルを選択し、[選択] をクリックします。

    Google ドライブ

    1. このオプションを初めて選択するときに、アカウントを選択して Vertex AI Studio がアカウントにアクセスできるように同意します。合計サイズが最大 10 MB の複数のファイルをアップロードできます。1 つのファイルのサイズが 7 MB を超えないようにしてください。
    2. 追加するファイルをクリックします。
    3. [選択] をクリックします。

      ファイルのサムネイルが [プロンプト] ペインに表示されます。トークンの合計数も表示されます。プロンプト データがトークンの上限を超えると、トークンは切り捨てられ、データの処理には含まれません。

  4. [プロンプト] テキスト領域に、生成する画像の説明を入力します。

  5. [**プロンプト**]()ボタンをクリックします。

Gemini は、説明に基づいて画像を生成します。このプロセスには数秒かかりますが、容量によっては比較的遅くなることがあります。

Python

インストール

pip install --upgrade google-genai

詳しくは、 SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Google 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_ENTERPRISE=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality, Part
from PIL import Image
from io import BytesIO

client = genai.Client()

# A video on 'The ABCs of agent building'
video = "https://www.youtube.com/watch?v=rjoMZyxncUI"

response = client.models.generate_content(
    model="gemini-3.1-flash-image",
    contents=[
        Part.from_uri(
            file_uri=video,
            mime_type="video/mp4"
        ), 
        "Generate an infographic of the topics covered in this video."
    ],
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("output_folder/video-image.png")

REST

環境をセットアップしたら、REST を使用してテキスト プロンプトをテストできます。次のサンプルは、パブリッシャー モデルのエンドポイントにリクエストを送信します。

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

  • PROJECT_ID: 実際の プロジェクト ID。
  • FILE_URI: プロンプトに含めるファイルの URI または URL。有効な値は次のとおりです。

    • Cloud Storage バケット URI: オブジェクトは一般公開されているか、リクエストを送信するプロジェクトと同じ Cloud de Confiance プロジェクトに存在している必要があります。
    • HTTP URL: ファイルの URL は一般公開されている必要があります。リクエストごとに 1 つの動画ファイル、1 つの音声ファイル、最大 10 個の画像ファイルを指定できます。音声ファイル、動画ファイル、ドキュメントのサイズは 15 MB 以下にする必要があります。
    • YouTube 動画の URL:YouTube 動画は、 コンソールのログインに使用したアカウントが所有しているか Cloud de Confiance 、公開されている必要があります。 リクエストごとにサポートされる YouTube 動画の URL は 1 つだけです。

    fileURI を指定する場合は、ファイルのメディアタイプ(mimeType)も指定する必要があります。VPC Service Controls が 有効になっている場合、fileURI のメディア ファイル URL の指定はサポートされていません。

    Cloud Storage に動画ファイルがない場合は、次の一般公開ファイル(MIME タイプが video/mp4 の gs://cloud-samples-data/video/animals.mp4)を使用できます。この動画を表示するには、 サンプルの MP4 ファイルを開きます。

  • MIME_TYPE: datafileUriフィールドで指定されたファイルのメディアタイプ。 指定できる値は以下のとおりです。

    クリックして MIME タイプを開く

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: プロンプトに含める指示のテキスト。 例:What is in the video?

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

その後、次のコマンドを実行して REST リクエストを送信します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.1-flash-image:generateContent"

PowerShell

リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

その後、次のコマンドを実行して REST リクエストを送信します。

$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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.1-flash-image:generateContent" | Select-Object -Expand Content
 
このサンプルの URL にある次の点に注意してください。
  • generateContent メソッドを使用して、レスポンスが完全に生成された後に返されるようにリクエストします。ユーザーが認識するレイテンシを短縮するには、streamGenerateContent メソッドを使用して、生成時にレスポンスをストリーミングします。
  • マルチモーダル モデル ID は、URL の末尾のメソッドの前に配置されます (例: gemini-3.5-flash)。このサンプルでは、他の モデルもサポートされている場合があります。
  • リージョン API エンドポイント(us-central1 など)を使用する場合、エンドポイント URL のリージョンによってリクエストの処理場所が決まります。リソースパス内の競合するロケーションは無視されます。

次のステップ

Gemini の画像生成の詳細については、次のリンクをご覧ください。