【Pythonで5分】動画を見るAIを作ろう。Gemini 1.5 Proで実現する「動画入力」完全実装ガイド

動画入力LLMの実装ガイド:Gemini 1.5 ProとPythonで動画解析 生成AIクリエイティブ
【Pythonで5分】動画を見るAIを作ろう。Gemini 1.5 Proで実現する「動画入力」完全実装ガイド

動画は「見る」ものから「読む」ものへ。マルチモーダルAIの衝撃

「この1時間の会議動画、大事なところだけ教えて」
「監視カメラの映像から、赤い車が通過した時間をリストアップして」

もし、これらをAIが一瞬でやってくれるとしたらどうでしょうか?これまで動画データは、その情報量の多さと複雑さゆえに「検索不可能」なブラックボックスでした。しかし、GPT-4oGemini 1.5 Proといった最新のマルチモーダルLLM(Large Language Models)の登場により、状況は一変しました。

結論から言います。動画を入力できるLLMは、テキスト生成以上のビジネスインパクトを持っています。

この記事では、単なるツールの紹介にとどまらず、プロのエンジニア視点で「動画入力LLM」の仕組み、コスト構造、そして実際にGoogle Colabで動かせるPythonコードまでを徹底解説します。AIに「目」を持たせる技術を、あなたの手で実装してみましょう。

1. 動画を入力できるLLMとは? 主要モデル徹底比較

現在、動画を「直接」または「間接的」に理解できる主要なモデルは以下の3つです。それぞれの特性を理解し、用途に合わせて使い分けることが重要です。

モデル名 動画入力方式 長所 短所
Gemini 1.5 Pro / Flash ネイティブ対応 (File API) 最大2時間の動画をそのまま入力可能。処理速度が速く、コスト効率が良い(特にFlash)。 極めて細かいフレーム単位の認識精度はGPT-4oに劣る場合がある。
GPT-4o フレーム画像化 (Base64) 認識精度が非常に高い。複雑な指示への追従性が高い。 APIで動画ファイルを直接受け取れない。フレームごとの課金となりコストが跳ね上がるリスクがある。
LLaVA-NeXT-Video ローカル / Hugging Face オープンソースで無料。プライバシー重視の環境で構築可能。 GPUリソースが必須。セットアップの難易度が高い。

なぜ今、Gemini 1.5 Pro/Flashなのか?

開発者として断言しますが、動画解析アプリを作るなら現時点ではGemini一択です。理由は2つあります。

  1. 圧倒的なコンテキストウィンドウ: GPT-4oの128kトークンに対し、Gemini 1.5 Proは最大200万トークン(一般公開版でも100万トークン)を扱えます。これは1時間の動画をまるごと飲み込ませても余裕があるサイズです。
  2. 実装の容易さ: GPT-4oの場合、OpenCVを使って「動画を画像に分解→Base64エンコード→API送信」という前処理コードを書く必要がありますが、Geminiは動画ファイルをAPIにアップロードするだけで済みます。

2. 仕組みの深掘り:AIはどうやって動画を「読んでいる」のか?

「動画を見る」といっても、AIが人間のように網膜で光を感じているわけではありません。ここを理解すると、プロンプトの精度が上がります。

トークン化の魔法

LLMにとって、テキストも画像も動画も、すべては「トークン(数値の羅列)」です。マルチモーダルモデルは、動画を「画像フレームの連続」+「音声データ」として分解し、それを専用のエンコーダー(Vision Encoderなど)を通してベクトル化します。

例えばGemini 1.5 Proは、動画を1秒間に1フレーム(1 FPS)の頻度でサンプリングし、最大264枚の画像トークンとして処理します(※設定により変動)。つまり、AIに見えているのは「パラパラ漫画」の状態です。

⚠️ 注意点:
AIは「コマとコマの間」を見ていません。0.1秒しか映らないサブリミナル的な映像や、高速で移動する物体は見落とす可能性があります。これを防ぐには、サンプリングレートを上げる設定が必要ですが、コストとのトレードオフになります。

3. ビジネスへの応用事例:その動画、宝の山につき

動画LLMを活用すると、以下のような「非構造化データの構造化」が可能になります。

  • 監視カメラ映像の異常検知: 「画面内で人が転倒したシーンを秒数付きでリストアップして」
  • UXリサーチの自動化: 「ユーザーがアプリ操作中に『使いにくい』と発言した箇所と、その時の画面の状態を抽出して」
  • 動画コンテンツのSEO: YouTube動画の中身を解析し、検索されやすいタグやチャプター分けを完全自動生成する。

4. 実践ガイド:Gemini APIで「動画ハイライト抽出機」を作る

では、実際に手を動かしましょう。ここではGoogleのGemini 1.5 Flashを使用します。Flashモデルは軽量で高速、かつ安価なため、動画解析のトライアルに最適です。

ステップ1: 準備

以下のものを用意してください。

  • Google AI StudioのAPIキー(こちらから取得
  • Google Colab(またはローカルのPython環境)
  • 解析したい動画ファイル(MP4形式、20MB程度推奨)

ステップ2: 環境構築

まず、必要なライブラリをインストールします。

!pip install -q -U google-generativeai

ステップ3: 実装コード

以下のコードをコピペして実行してください。動画の内容を解析し、JSON形式で出力させるプロンプトを含んでいます。

import google.generativeai as genai
import time
import os

# --- 設定エリア ---
API_KEY = "あなたのAPIキーをここに貼り付け"
VIDEO_PATH = "sample_video.mp4" # アップロードした動画ファイル名
# -----------------

genai.configure(api_key=API_KEY)

def analyze_video(video_path):
    print(f"🎬 動画をアップロード中: {video_path}...")
    video_file = genai.upload_file(path=video_path)
    
    # 処理完了を待機
    while video_file.state.name == "PROCESSING":
        print("⏳ 処理中...")
        time.sleep(2)
        video_file = genai.get_file(video_file.name)

    if video_file.state.name == "FAILED":
        raise ValueError(f"動画処理に失敗しました: {video_file.state.name}")

    print(f"✅ 準備完了。解析を開始します。
")

    # モデルの準備(Gemini 1.5 Flashを使用)
    # note: 動画解析にはFlashがコストパフォーマンス最強です
    model = genai.GenerativeModel(model_name="gemini-1.5-flash")

    # プロンプト作成
    prompt = """
    この動画を見て、以下のタスクを実行してください。
    1. 動画の全体的な要約(200文字以内)
    2. 動画内の重要なイベントをタイムスタンプ付きで抽出
    
    出力は以下のJSON形式のみにしてください。
    {
        "summary": "要約テキスト",
        "events": [
            {"time": "00:15", "description": "イベント内容"},
            {"time": "01:30", "description": "イベント内容"}
        ]
    }
    """

    # 生成実行
    response = model.generate_content(
        [video_file, prompt],
        generation_config={"response_mime_type": "application/json"}
    )

    # ファイル削除(クラウド上のストレージ節約)
    genai.delete_file(video_file.name)
    
    return response.text

# 実行
try:
    result = analyze_video(VIDEO_PATH)
    print(result)
except Exception as e:
    print(f"エラーが発生しました: {e}")

解説とポイント

  • genai.upload_file: 動画をGoogleのサーバーに一時アップロードします。20MBを超える動画でもこの方法なら処理可能です。
  • response_mime_type: Gemini 1.5の新機能「JSONモード」を強制しています。これにより、プログラムで扱いやすい構造化データが確実に返ってきます。
  • gemini-1.5-flash: Proモデルより安価で高速です。複雑な推論が必要ない「抽出」タスクならFlashで十分です。

5. AIハック術師の視点:動画RAGへの布石

この技術の真価は、単発の動画解析ではありません。これをシステム化し、「自社の全動画資産を検索可能にする(動画RAG)」ことにあります。

例えば、過去のウェビナー動画をすべて上記のスクリプトで解析し、JSONデータをベクトルデータベース(Pineconeなど)に保存しておけば、「AIエージェントについて解説しているシーンを見せて」と質問するだけで、該当する動画の該当する秒数へ即座にジャンプするシステムが構築できます。

2025年、テキストの検索は当たり前になりました。次は「動画の中身」をハックする者がビジネスを制します。

次のアクション

まずは手持ちのスマホ動画で上記のコードを試してみてください。そして、より高度なシステム構築に興味がある方は、以下の記事で「AIエージェント」や「ガバナンス」についても学んでみてください。

あわせて読みたい:

コメント

タイトルとURLをコピーしました