Gemini のエージェント型動画理解でバグ再現動画を読ませたら、長い録画ほど得だった話
🙌 結論から
5分を超える録画を Gemini に読ませるなら、エージェント型の動画理解に切り替えない理由はほぼないです。
2026年9月1日、Gemini API に「エージェント型動画理解(agentic video understanding)」が入りました。
動画を頭から1秒ずつ全部読むのではなく、モデルが「どこを・どの速さで・映像か音声か文字起こしか」を自分で選んで、必要なところだけ見に行く仕組みです。
私はバグ再現の画面録画と、30分くらいの会議録画で試しました。
長い動画ほど、使うトークンがぐっと減るのが正直かなりありがたいです(^^)
逆に、1〜2分の短いクリップなら今までどおりの読み方で十分でした。
💡 何が変わったのか
これまでの動画入力は、決まったフレームレート(初期値は1秒に1枚)でフレームを切り出して、全部をコンテキストに積む方式でした。
30分の会議録画を渡すと、関係ない雑談の時間ぶんまでトークンを払うことになります。。
エージェント型では、モデルが内部の動画ツールを呼んで、流し見・拡大・巻き戻しを繰り返しながら答えに必要な区間だけを取りに行きます。
Google の発表では、固定レートで読む方式と比べてトークン使用量は最大88%減、分析コストは最大66%減、精度は最大7%上がったそうです。
長い動画のテストでは、1回の質問あたり397,600トークンが47,700トークンまで減った例も出ていました👀
対応モデルは Gemini 3.8 Flash・3.7 Flash・3.6 Flash・3.5 Flash-Lite で、Google AI Studio の Gemini API と Gemini Enterprise Agent Platform から、アップロードした動画と YouTube の URL に使えます。
Pro と Flash の使い分けは Gemini 3.8 Flash の記事 で整理したので、今回は動画の読ませ方だけに絞ります。
🔧 有効にするのは1行でした
Python の公式 SDK(google-genai)なら、動画の Part に media_processing を指定するだけです。
from google import genai
from google.genai import types
client = genai.Client()
video = client.files.upload(file="repro.mp4")
res = client.models.generate_content(
model="gemini-3.5-flash-lite",
contents=[
types.Part(
file_data=types.FileData(file_uri=video.uri, mime_type=video.mime_type),
media_processing=types.MediaProcessing.AGENTIC, # ← ここだけ
),
"エラーのトーストが出た瞬間の時刻と、その直前にユーザーが押したボタンを教えて",
],
)
print(res.text)
MediaProcessing には STATIC(固定レートで全フレームを積む)と AGENTIC(モデルが見る場所を決める)があります。
SDK の定義コメントでも、AGENTIC が「たいていの用途でのおすすめ」と書かれていました。
バグ再現の録画では、「何分何秒で何が起きたか」を聞くと、その区間だけを見て返してくれるので、動画を自分で見返す時間がかなり減りました✨
プロンプトは「要約して」より「〇〇が起きた時刻を教えて」のほうが、エージェント型の良さが出ます。
探す場所がはっきりしているほど、見に行く区間が絞れるからだと思います。
👀 こう使い分けています
公式のドキュメントでも、5分くらいまでの短い動画は固定レート(STATIC)のほうが向いているとされています。
エージェント型は入力トークンを減らすかわりに、推論と出力のトークンが増えるので、短い動画だと差が出にくいんですよね・・・
| 動画 | 私の設定 | 理由 |
|---|---|---|
| 1〜2分のバグ再現クリップ | STATIC | 全フレームを見てほしい。待ち時間も短い |
| 10分以上の画面録画 | AGENTIC | 「どこで落ちたか」だけ知りたい |
| 30分以上の会議録画 | AGENTIC | 決定事項と宿題だけ拾えれば十分 |
| 一瞬の表示崩れを探す | STATIC+fps を上げる | 見落としたくない |
モデルは、量をさばく会議録画は 3.5 Flash-Lite、判断が難しいバグ調査は 3.8 Flash、という分け方にしています。
ちなみに OpenAI 側では、Codex のモデルを GPT-6 Sol と Luna で分けて使っています(Codex の使い分けの記事)。
「重い判断は上位モデル、量をさばくのは軽いモデル」という考え方は、ベンダーが違ってもあまり変わらないですね(`・ω・´)
🤔 最初にハマったところ
1つ目は、アップロード直後に投げてエラーになったこと。
Files API に上げたばかりの動画はまだ処理中の状態で、使える状態(ACTIVE)になるまで少し待つ必要があります。
私は client.files.get(name=video.name) で状態を見て、ACTIVE になってから generate_content を呼ぶようにしました。
2つ目は、動画の長さの上限です。
Gemini 3.8 Flash などでは、音声ありで約45分、音声なしで約1時間まで、1回のプロンプトに入れられる動画は10本までとされています。
1時間半の定例をそのまま渡したら入らなかったので、前半と後半に分けて投げています(・_・;)
とはいえ、この2つさえ押さえれば、あとは1行足すだけで使えるので導入はかなり楽でした。
パパ系Webエンジニア〜愛用ガジェット一覧 🛍️
AI開発・執筆に使っている作業デスク環境を楽天ROOMにまとめています ✨ デスク周りの参考にどうぞ 🙌
🙌 まとめ
長い録画を「全部読ませる」から「必要なところだけ見に行かせる」に変えられるのが、今回のアップデートの一番おいしいところでした。
media_processing を AGENTIC にする1行だけで試せるので、動画を Gemini に投げている人はまず長めの録画で比べてみるのがおすすめです。
短いクリップは STATIC のまま、長い録画だけ AGENTIC、という分け方にするとコストも読みやすくなります👍
※ バージョン番号・提供範囲は今後も変わる可能性があります。最新情報は 公式サイト をご確認ください👀