招待して報酬

招待報酬の仕組み

招待リンクを共有します。友だちがリンクから登録してチャージすると、その後のチャージごとに表示された報酬を受け取れます。

Gemini Omniで動画を延長・首尾フレーム補間する方法:APIと連続性チェック

短いクリップの末尾延長または2枚のキーフレーム間の補間を実行し、納品前に映像と音声の連続性を点検する実践ガイドです。

目次
Gemini Omniで動画を延長・首尾フレーム補間する方法:APIと連続性チェック

短い動画が動作の途中で終わる、または最初と最後の画像だけで中間の動きがないなら、gemini-omni-1.1-flashで末尾に3〜10秒を追加するか、2枚の境界画像の間を補間できます。この記事を読めば、モードの選び方、APIの呼び出し方、納品可否の判断方法まで分かります。

既存クリップの動き、カメラ、音を引き継ぎたいなら末尾延長、開始と終了が決まっていて中間だけがないなら首尾フレーム補間を選び、MP4が返っても被写体、動き、接続部、音声を別に確認してください。

動画延長と首尾フレーム補間のどちらを選ぶ?

元動画があるなら末尾延長、特定の終了画像に到達させたいなら首尾フレーム補間を優先します。延長は目標の最終フレームを境界にしないため、用途を取り違えると生成と確認をもう一巡することになります。

作業入力向いている用途特に見る連続性
末尾延長動画1本、必要なら参照画像動作、カメラ移動、場面を数秒続ける接続部の姿勢、速度、カメラ方向、照明、音声
首尾フレーム補間最初と最後の画像、遷移説明2つの明確な状態の間を埋める被写体の同一性、空間関係、動線、終点への到達

アップロード動画の延長は短い追加向けです。公式ガイドは1回3〜10秒、プロンプトガイドは10秒単位で全体40秒までの延長を説明しています。入力クリップは10秒以下で、追加位置は末尾だけです。先頭や途中にショットを挿入するなら、一般的な編集ソフトを使います。

APIを呼ぶ前に4点を決める

生成前に、モデル、出力仕様、カットの有無、比較用の元データを固定します。どれかが曖昧だと、再生成が必要になったり、接続部の変化がモデル由来か元素材由来か判断できなくなったりします。

GAのmodel IDを使う

GAのmodel ID gemini-omni-1.1-flashを使います。2026年8月27日に正式提供となり、旧gemini-omni-flash-preview endpointは2026年9月30日に廃止予定です。

まず720pで連続性を確認する

初回は既定の720pを使い、連続性の問題と高解像度ファイルの受け渡しを分けて確認します。response_formatのresolutionは360p、720p、1080p、4kに対応し、1080pと4kはアップスケール出力、既定の縦横比は16:9で9:16も指定できます。4 MBを超える結果、とくに720p超ではdelivery="uri"を使い、ファイルがactiveになってからダウンロードします。

ワンカットか意図的なカットかを決める

ワンカットか意図的なカットかを先に決めます。延長プロンプトの0sは元動画の先頭ではなく、追加部分の開始を指します。つながった動作が必要なら「単一の連続ショット」「カットなし」と明示し、カットを入れるなら追加部分の何秒目かを書きます。

元動画と境界画像を保存する

元クリップと2枚の境界画像を保管します。公式ガイドによると、Omniは元動画の最後の10秒をコンテキストに使い、接続のため入力末尾の一部フレームを変更する場合があります。そのため、元データと出力の比較は連続性チェックに含める必要があります。

元動画があるなら末尾から延長する

既存動画の動作、カメラ移動、場面を数秒続けたいときは末尾延長を使います。まず720pの最小リクエストを通し、その後に被写体、動き、カメラ、音声の条件を絞ります。

最小の720pリクエストを先に通す

次のPython例はFiles APIに動画をアップロードし、処理完了を待ってからURIと指示をinteractions.createへ渡します。720pに固定することで、連続性を先に直し、高解像度ファイルの受け渡しは後で扱えます。

import base64
import time
from google import genai

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

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)

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "video", "uri": video_file.uri},
        {
            "type": "text",
            "text": (
                "シーンを途切れないワンカットとして続けてください。"
                "同じ被写体、衣装、カメラ方向、照明、動作速度を保ち、カットや新しい台詞は入れないでください。"
            ),
        },
    ],
    response_format={"type": "video", "resolution": "720p"},
)

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

プロンプトは確認できる条件で書く

「続きを作る」だけでは情報不足です。少なくとも、被写体で変えてはいけない点、動作の進み方、カメラ移動、照明や環境の変化、カットや新しい音の可否を、観察可能な表現で指定します。「右手を同じ速度で上げ続ける」は検証できますが、「自然に」は検証しにくい指示です。

モードを誤認したときだけtaskを指定する

プロンプトで延長モードに入らない場合は、generation_configに{"video_config": {"task": "extend"}}を加えられます。ただし公式ガイドは、taskが厳しい制約を加えるため、まずプロンプトを使うよう勧めています。直前のターンでモデルが生成した動画なら、previous_interaction_idで再アップロードせず続けられます。状態の保存が必要で、store=falseで作成した結果はそのIDから後で編集できません。

台詞や地域制限に当たるなら方針を変える

会話音声と地域にも制限があります。人が話しているアップロード動画へ新しい台詞を足す延長は現在できません。無言の続き、または新しい台詞を要求しない場合は処理できます。モデル生成動画をprevious_interaction_idで複数ターン延長する場合は発話生成がサポートされます。アップロード動画の編集・延長はEEA、スイス、英国では利用できませんが、モデル生成動画の延長は利用可能地域でサポートされます。

首尾画像だけなら、その間の動きを生成する

開始と終了は決まっているが中間の動きがない場合は、首尾フレーム補間を使います。2枚を順番に渡し、被写体、カメラ、環境が最初の状態から最後の状態へどう移るかを書きます。

2枚の境界画像を先に送る

開始・終了状態は決まっているが中間の動きがない場合に使います。2枚の画像を順番にinputへ入れ、被写体、カメラ、環境がどう移行するかを書きます。次の完全な例ではJPEGをBase64化し、720pを要求します。

import base64
from pathlib import Path
from google import genai

client = genai.Client()

first_frame_b64 = base64.b64encode(Path("first.jpg").read_bytes()).decode()
last_frame_b64 = base64.b64encode(Path("last.jpg").read_bytes()).decode()

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "image", "data": first_frame_b64, "mime_type": "image/jpeg"},
        {"type": "image", "data": last_frame_b64, "mime_type": "image/jpeg"},
        {
            "type": "text",
            "text": (
                "最初のフレームから最後のフレームへ自然に移行してください。"
                "被写体の同一性とカメラ方向を保ち、動きの軌道を連続させ、急なカットを避けてください。"
            ),
        },
    ],
    response_format={"type": "video", "resolution": "720p"},
)

with open("interpolation.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

モードが定まらない場合だけimage_to_videoを使う

2枚を順番に送ったうえで、1枚目が開始、2枚目が終了だと明記します。それでもモードが違う場合はimage_to_videoをtaskとして追加しますが、被写体、カメラ、動きの説明を置き換えるものではありません。

差が大きいほど変化の順序を書く

境界画像の被写体、縦横比、カメラ軸、空間配置が整合しているほど、課題を明確にできます。差が大きい場合は「被写体が先に振り向き、次にカメラが移動し、最後に照明が変わる」のように順序を指定します。これは制作上の方法であり、モデル結果の保証ではありません。

納品できるか?接続部、被写体、動き、音声で判断する

判断基準は「だいたい似ている」ことではなく、不具合を指摘し、次の生成で使える指示に変換できることです。まず通常速度で全体を見て、次に接続部を低速またはコマ送りで確認し、音声は別に聞きます。

項目確認内容再生成で使える指示
被写体顔、髪、衣装、装飾品、体格、手、持ち物「コートの色と右手の物を変えない」
動き方向、速度、重心、接触点、視線、カメラ軌道「現在の歩幅のまま右へ進み、加速や反転をしない」
編集・画ジャンプ、露出、色温度、被写界深度、遠近、背景形状「同じカメラ軸と焦点距離を保ち、カットしない」
音声環境音、拍、台詞、残響、音量、クリック、新しいノイズ「環境音を続け、台詞を足さず、拍を変えない」

延長は接続部、補間は両端の一致を見る

延長では、元動画の最後およそ1秒と追加部分の最初およそ1秒を比較し、元の末尾フレームが変わっていないかも確認します。補間では中間だけでなく、開始が最初の画像に対応し、終了が2枚目へ実際に到達しているかを見ます。雰囲気が似ているだけでは不十分です。

再生成では一度に1項目だけ厳しくする

再生成では一度に主要変数を1つだけ厳しくします。まず被写体、次に動き、その後カメラと音声を直すと、どの指示が効いたか判断しやすくなります。「接続部で左袖の色が変わる」と書き、「もっと映画的に」といった曖昧な表現は避けます。

合わない作業にこのendpointを無理に使わない

長い作品の途中にショットを入れる、既存の台詞を続ける、複数の元動画をまたいで判断するといった作業では、このendpointは1回で完結する編集システムではありません。以下の制限に当たる場合は、ショット単位に分けるか、一般的な編集工程へ切り替えます。

  • アップロード動画は末尾だけ延長でき、10秒以下である必要があります。
  • 人が話すアップロード動画に新しい台詞は追加できず、音声編集自体も未対応です。
  • 音声参照はアップロードできず、動画参照内の音声は無視されます。
  • 動画参照は最大3本、各3秒までです。複数動画を横断する推論は未対応です。
  • system instruction、temperature、top_p、stop sequence、独立したnegative prompt欄は未対応です。禁止事項は通常プロンプトに書きます。
  • 生成動画には不可視のSynthIDが入り、入力と出力には安全フィルタが適用されます。
  • 公式資料は英語プロンプトを完全対応とし、他言語は未評価のため結果が変わり得るとしています。

実務では、短いショットを個別に生成し、一般的な編集ソフトで組み立てとミックスを行うのが直接的です。末尾延長に途中挿入、台詞の続き、複数素材の推論まで繰り返し求めるより時間を節約できます。

納品前にこのリストを確認する

APIの成功応答は品質承認ではありません。納品前に次を確認します。

  • 入力動画、出力動画、2枚の境界画像を保存している;
  • model ID、解像度、完全なプロンプトを記録している;
  • 延長の接続部をコマ送りで確認し、元の末尾フレームが変わっていないか見ている;
  • 補間が1枚目から始まり、実際に2枚目へ到達している;
  • 音声を別に聞き、途切れ、クリック、新しいノイズを確認している;
  • 地域、入力時間、台詞、参照素材の制限を確認している。

説明できない項目があれば、APIの状態だけで承認せず、先に修正します。

公式資料

LLM ワークフローを最適化しませんか?

単一 API でモデルを接続し、キーと AI コストを管理できます。

無料で始める