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

シーン拡張機能は、1回につき10秒ずつ、最大40秒まで追加されます。また、Omni 1.1は、1秒ではなく10秒間の先行コンテキストを読み取るようになりました。リクエストの形式、制限、そしてセグメント3のずれを防ぐ方法。

Ashley Innocent

Ashley Innocent

28 8月 2026

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

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

Gemini Omni 1.1 Flash は 10 秒のクリップを生成します。その制限を超えるにはシーン拡張を使用します。各拡張呼び出しはさらに 10 秒を追加し、累積で最大 40 秒になります。

この機能はプレビューモデルにも存在しましたが、あまり役に立ちませんでした。プレビューモデルでは、映像の最後の 1 秒を見てから継続していたため、色の整合性を大まかに保つ程度のコンテキストしかありませんでした。キャラクターは服を着替え、カメラの動きはリセットされました。2026 年 8 月 27 日の GA リリースでは、そのウィンドウが以前のコンテキストの 10 秒に拡大され、Google はこの変更により「視覚的な一貫性と物語の整合性が向上した」と評価しています。

このガイドでは、その呼び出し方法、実際の制限、そして 40 秒のシーケンスを 3 番目のセグメントで破綻させない方法について説明します。

基本的な拡張呼び出し

拡張は 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))

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

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)

拡張するビデオが同じセッションで 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.",
)

API ウォークスルーでは、解像度や配信オプションを含む残りのリクエストサーフェスについて説明しています。

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

拡張機能に参照メディアを添付し、プロンプトからそれを参照できます。アップロードされた参照には、<IMAGE_REF_0>、<IMAGE_REF_1> などとしてアドレス指定するスロットが割り当てられます。

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."},
    ],
)

ビデオ参照も機能しますが、それぞれ 3 秒のクリップが 3 つまでという制限があります。モデルは動きと外観を読み取ります。参照クリップの音声は無視されます。

シーケンスを計画する前に知っておくべき制限

40秒が上限です。合計4つのセグメント:1つの生成と3つの拡張。単一のシーケンス内でそれ以上進む方法はありません。

追加のみ。拡張はクリップの最後に付け加えます。フッテージを前置したり、途中に挿入したりすることはできません。もしセグメント2が間違っていた場合、セグメント2から先に再生成することになり、それ以降のすべてが巻き込まれます。

アップロードされた入力は10秒まで。それがアップロードするビデオの制限です。previous_interaction_idを介した複数ターンのチェーンはこの制限に縛られません。モデルは以前の状態を既に保持しているからです。

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

地域制限。欧州経済領域、スイス、英国では、ビデオのアップロードと編集は利用できません。これらの地域ではモデルが生成したビデオは編集可能であり続けるため、アップロードパスは機能しませんが、previous_interaction_idパスは引き続き機能します。

一度に1つのビデオ。モデルは複数の入力ビデオを横断して推論しません。

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

これが最も費用と不満を節約するワークフローです。

720p の 40 秒のシーケンスは、ビデオ出力でおよそ 4.06 ドルかかります。そして失敗のパターンは特定されています。ストーリーがセグメント 3 のどこかで逸脱し、セグメント 3 と 4 を再生成しますが、それがセグメント 3 の冒頭で気に入っていたものを変えてしまうこともあります。納得のいくバージョンを見つけるまでに、何度もフルレンダリングを繰り返すことがあります。

まず、360p で全体のアークを下書きします。これは 3 分の 1 のコストで最大 60% 速く生成されるため、同じ 4 つのセグメントは約 1.35 ドルで実行できます。ストーリーが 4 つの拡張すべてで生き残ることを確認したら、検証済みのプロンプトで 720p 以上で再レンダリングします。価格設定の記事で詳しい計算が示されています。

応答形式で解像度を設定します。

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"},
)

4つのセグメントを生き残るプロンプトの書き方

いくつかのパターンは、他のものよりも優れた結果をもたらします。

シーン全体ではなく、変化を記述する。モデルはすでに、その前の10秒間の内容を把握しています。設定を再記述すると、画面上の既存のものを再解釈するように促してしまいます。「カメラがドアに迫る」は、部屋に関する新しい段落よりも優れています。

1つのセグメントにつき1つの動きを与える。2つのアクションを求める拡張は、どちらも急ぎ足のバージョンになる傾向があります。10秒は1つのアクションです。

連続性のアンカーを明確にする。一定でなければならないもの(「同じ赤いジャケット」、「同じローアングル」)を明示的に指定することで、モデルは継ぎ目をまたいで保持すべきものを認識できます。

追加のみの制限と戦わない。再生される順序でシーケンスを計画します。後で最初を修正する方法は、それ以降のすべてを再生成する以外にはありません。

ここではプロンプト作成が非常に重要であり、Veoプロンプトガイドは、ビデオモデル間で転用可能な原則を扱っています。

拡張機能を2度同じ方法で確認する

4つのチェーンされた呼び出しは、モデルの動作の変化が現れる4つの場所を意味し、最終レンダリングだけを見ていると、回帰を目視で確認するのは困難です。

Apidogで各ステージを独自の要求として保存し、ファイルURIとインタラクションIDを環境変数に入れることで、手動でチェーンを再構築することなく特定のセグメントを再実行できます。応答の形状をアサートします。高解像度の拡張ではファイルが4MBを超え、インラインのBase64からURIに切り替わる可能性があるためです。タイムアウトはデフォルトよりも大幅に長く設定してください。モデルが最初に10秒のコンテキストを読み込むため、拡張は初期生成よりも長くかかります。

このハーネスは10分かかりますが、シームの問題がプロンプトにあるのか、モデルのアップデートにあるのかを知る必要が生じた最初の時点で元が取れます。Apidogをダウンロードして設定してください。

よくある質問

Gemini Omni のビデオの長さはどのくらいですか? 10 秒の生成と 3 回の 10 秒の拡張で、合計 40 秒までです。

自分で撮影したビデオを拡張できますか? はい、EEA、スイス、英国以外であれば、最大 10 秒の入力をアップロードできます。Files API を介してアップロードし、URI を渡します。

クリップの先頭に追加できますか? いいえ。拡張は末尾にのみ追加されます。

セグメント間でキャラクターの見た目が変わるのはなぜですか? 通常、プロンプトが変更ではなくシーン全体を再記述しているか、連続性のアンカーが明確でないためです。一定であるべきものを明示的に指定し、拡張時にキャラクター画像をリファレンスとして渡すことを検討してください。

各拡張に追加料金がかかりますか? はい。各拡張は、独自の 10 秒のビデオ出力と、読み取るコンテキストの入力トークンに対して課金されます。

40 秒以上必要な場合はどうすればよいですか? Veo 3.1 は 720p のみで、一度に 7 秒ずつ、最大 148 秒まで拡張します。モデル比較ではそのトレードオフについて、Veo の API ガイドでは統合の詳細について説明しています。

シーン拡張は Omni をデモから実用可能なものへと変える機能ですが、計画を立てることで報われます。4つのシーンを絵コンテに描き、全体のアークを360pで下書きし、各プロンプトを1つの動きに限定し、すでに機能することがわかっているバージョンにのみ720pの費用をかけましょう。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる