DEV Community

Cover image for Gemini Omni 1.1 Flashで動画を40秒に延長する方法
Akira
Akira

Posted on Originally published at apidog.com

Gemini Omni 1.1 Flashで動画を40秒に延長する方法

Gemini Omni 1.1 Flash は、標準で 10 秒の動画クリップを生成します。シーン拡張を使えば、1 回の呼び出しごとに 10 秒追加でき、1 つのシーケンスを最大 40 秒まで延長できます。

今すぐApidogを試す

この機能はプレビューモデルにもありましたが、実用性には課題がありました。プレビューモデルは映像の最後の 1 秒だけを参照して継続していたため、維持できるコンテキストは色の整合性を保てる程度でした。キャラクターの服装が変わったり、カメラワークがリセットされたりすることもあります。

2026 年 8 月 27 日の GA リリースでは、参照ウィンドウが以前のコンテキスト 10 秒分に拡大されました。Google は、この変更によって「視覚的な一貫性と物語の整合性が向上した」と説明しています。

この記事では、シーン拡張の呼び出し方法、実際の制限、そして 3 つ目のセグメントで 40 秒シーケンスを破綻させないための設計方法を紹介します。

基本的な拡張呼び出し

拡張は Files API を使います。まずクリップをアップロードし、その URI と次の展開を説明するプロンプトを渡します。

import base64
from google import genai

client = genai.Client()

video_file = client.files.upload(file="my_video.mp4")

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "text", "text": "Continue the scene."},
    ],
)

with open("extended.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))
Enter fullscreen mode Exit fullscreen mode

アップロードは非同期で処理されます。インタラクションを送信する前に、ファイルの状態をポーリングしてください。

import time

while video_file.state == "PROCESSING":
    time.sleep(10)
    video_file = client.files.get(name=video_file.name)

if video_file.state == "FAILED":
    raise ValueError(video_file.state)
Enter fullscreen mode Exit fullscreen mode

同じセッションで Omni が生成した動画を拡張する場合は、再アップロードせずにインタラクション ID をチェーンできます。この方法はトークンコストを抑えやすく、より多くの状態を保持できます。

res2 = client.interactions.create(
    model="gemini-omni-1.1-flash",
    previous_interaction_id=res1.id,
    input="The camera pulls back to reveal the whole street.",
)
Enter fullscreen mode Exit fullscreen mode

解像度や配信オプションなど、その他のリクエスト項目についてはAPI ウォークスルーを参照してください。

拡張シーンにキャラクターを登場させる

参照メディアを拡張リクエストに添付し、プロンプトから参照できます。アップロードしたメディアには、<IMAGE_REF_0> などのスロットが割り当てられます。

video_file = client.files.upload(file="my_video.mp4")
character_img = client.files.upload(file="character.png")

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "document", "uri": character_img.uri},
        {"type": "text", "text": "Extend this video: have the character shown in <IMAGE_REF_0> enter the scene and wave."},
    ],
)
Enter fullscreen mode Exit fullscreen mode

動画参照にも対応していますが、使用できるのは 3 秒のクリップ 3 本までです。モデルは参照動画から動きと外観を読み取ります。ただし、参照クリップの音声は無視されます。

シーケンス設計で押さえる制限

最大 40 秒

1 回の生成と 3 回の拡張、合計 4 セグメントが上限です。同じシーケンス内で 40 秒を超えて延長することはできません。

拡張は末尾への追加のみ

拡張はクリップの最後に追加されます。冒頭への追加や途中への挿入はできません。

セグメント 2 に問題があれば、セグメント 2 以降をすべて再生成する必要があります。後続セグメントだけを独立して修正することはできません。

アップロードできる入力は 10 秒まで

アップロードする動画は最大 10 秒です。一方、previous_interaction_id を使った複数ターンのチェーンはこの制限を受けません。モデルが以前の状態を保持しているためです。

アップロード動画の拡張では対話を追加できない

他のユーザーがアップロードしたクリップをサイレントに拡張したり、複数ターンのインタラクションで作業したりすることはできます。ただし、アップロードした動画を拡張するリクエストに対話を追加することはできません。

地域制限

欧州経済領域(EEA)、スイス、英国では、動画のアップロードと編集を利用できません。

これらの地域でも、モデルが生成した動画は引き続き編集できます。そのため、アップロードを使う方法は利用できませんが、previous_interaction_id を使う方法は利用できます。

入力動画は 1 本 בלבד

モデルは複数の入力動画をまたいだ推論には対応していません。

レンダリング前に全体のアークを下書きする

最もコストと手戻りを抑えられるのは、低解像度で全体を先に検証するワークフローです。

720p の 40 秒シーケンスは、動画出力だけで約 4.06 ドルかかります。よくある失敗は、ストーリーがセグメント 3 で逸脱することです。その場合、セグメント 3 と 4 を再生成することになりますが、セグメント 3 の冒頭で気に入っていた部分まで変わる可能性があります。納得できる結果に到達するまで、フルレンダリングを何度も繰り返すことになりかねません。

まず 360p で全体のアークを下書きしましょう。360p は約 3 分の 1 のコストで、最大 60% 速く生成できます。同じ 4 セグメントを約 1.35 ドルで実行できるため、ストーリーが最後まで成立するかを安く検証できます。

4 つの拡張すべてで内容が維持できることを確認したら、検証済みのプロンプトを使って 720p 以上で再レンダリングします。詳しい計算は価格設定の記事にまとまっています。

解像度は response_format で指定します。

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "text", "text": "Continue the scene."},
    ],
    response_format={"type": "video", "resolution": "360p"},
)
Enter fullscreen mode Exit fullscreen mode

4 セグメントを維持するプロンプトの書き方

拡張プロンプトでは、次のパターンが特に有効です。

シーン全体ではなく変化を記述する

モデルは直前の 10 秒をすでに把握しています。設定をもう一度説明すると、画面上にある要素を再解釈させることになります。

たとえば、「部屋の様子」を長く再説明するよりも、「カメラがドアに近づく」と変化だけを指定する方が安定します。

1 セグメントにつき 1 つの動きを指定する

2 つのアクションを同時に求めると、どちらも急ぎ足で描写される傾向があります。10 秒のセグメントには、基本的に 1 つのアクションだけを割り当ててください。

連続性のアンカーを明示する

セグメントをまたいで維持したい要素を明示します。

  • 同じ赤いジャケット
  • 同じローアングル
  • 同じ照明
  • 同じカメラの向き

こうしたアンカーによって、モデルは継ぎ目を越えて保持すべき要素を判断しやすくなります。

追加のみの制限に合わせて順序を設計する

シーケンスは再生される順番どおりに計画してください。最初のセグメントを後から修正する場合、そこから後ろをすべて再生成する必要があります。

動画プロンプトの設計については、Veo プロンプトガイドで、動画モデル間でも応用できる原則が解説されています。

拡張を同じ条件で再現・検証する

4 回のチェーン呼び出しには、モデルの挙動が変化する可能性のあるポイントが 4 つあります。最終レンダリングだけを確認していると、どのセグメントで回帰が発生したのか特定しにくくなります。

Apidogで各ステージを個別のリクエストとして保存し、ファイル URI とインタラクション ID を環境変数に設定しましょう。これにより、チェーン全体を手動で組み直さずに、特定のセグメントだけを再実行できます。

検証時は、次の点も確認してください。

  • レスポンスの形状をアサートする
  • 高解像度の拡張ではファイルサイズを確認する
  • 4 MB を超える場合はインライン Base64 から URI に切り替える
  • 初期生成より長いタイムアウトを設定する

拡張処理では、モデルが最初に 10 秒分のコンテキストを読み込むため、初期生成より時間がかかります。

このテストハーネスの実行には約 10 分かかりますが、シームの問題がプロンプトに起因するのか、モデルの更新に起因するのかを切り分ける必要が生じた時点で十分に元が取れます。Apidogをダウンロードしてセットアップしてください。

よくある質問

Gemini Omni の動画は何秒まで生成できますか?

10 秒の初期生成に 3 回の 10 秒拡張を加え、合計 40 秒までです。

自分で撮影した動画を拡張できますか?

EEA、スイス、英国以外であれば、最大 10 秒の動画をアップロードして拡張できます。Files API 経由でアップロードし、取得した URI を渡します。

クリップの先頭に追加できますか?

できません。拡張は末尾にのみ追加されます。

セグメント間でキャラクターの見た目が変わるのはなぜですか?

多くの場合、プロンプトが「変化」ではなくシーン全体を再記述しているか、連続性のアンカーが不足しています。

維持したい要素を明示し、必要に応じて拡張時にキャラクター画像をリファレンスとして渡してください。

拡張ごとに追加料金がかかりますか?

はい。各拡張には、独自の 10 秒の動画出力と、読み込むコンテキストの入力トークンに対する料金が発生します。

40 秒を超える動画が必要な場合はどうすればよいですか?

Veo 3.1 は 720p のみ対応し、1 回につき 7 秒ずつ、最大 148 秒まで拡張できます。モデル比較では両モデルのトレードオフを、Veo の API ガイドでは統合方法を確認できます。

まとめ

シーン拡張によって、Omni はデモ用途から実用的な動画生成へ近づきました。ただし、長いシーケンスほど事前計画が重要です。

  1. 4 つのセグメントを絵コンテにする
  2. 360p で全体のアークを検証する
  3. 各プロンプトを 1 つの動きに限定する
  4. 連続性のアンカーを明示する
  5. 成功を確認したバージョンだけ 720p で再レンダリングする

この手順を守れば、セグメント 3 以降の破綻による高価な再レンダリングを減らせます。

Top comments (0)