AI・機械学習
Claude-real-video - どんなLLMでもビデオを見ることができる
Claude-real-video - any LLM can watch a video (github.com)
要約
claude-real-videoは、LLM(大規模言語モデル)がビデオを「見る」ことを可能にするツールです。従来のツールが動画のトランスクリプトを読み取るだけだったり、固定間隔でフレームをサンプリングして重要なシーンを見逃したりするのに対し、このツールはシーンチェンジ検出や重複フレームの削除をローカルで行い、LLMが解釈しやすい形式で出力します。これにより、LLMはビデオの内容をより正確に理解できるようになります。
全文翻訳
claude-real-video Claude — または任意のLLM — に実際にビデオを見させる。
ほとんどのAIツールは、実際にはビデオを見ていません。ChatGPTにYouTubeリンクを貼り付けても、画像ではなくトランスクリプトを読み取ります。Claudeはビデオファイルを全く受け付けません。ネイティブでビデオを読み取れるGeminiでさえ、Googleに送信する必要があり、デフォルトで1fpsという固定間隔でフレームをサンプリングするため、速いカットは通り過ぎてしまいます。
claude-real-videoは、それとは異なり、ローカルで動作します。URLまたはファイルを指定すると、本当に重要なフレーム(固定のクォータではなく、すべてのシーン変更)を抽出し、ほぼ重複するものを破棄し、音声を文字起こしして、LLMが読み取れるきれいなフォルダを、何もアップロードせずに自分のマシン上に提供します。
crv "https://www.youtube.com/watch?v=..." # → crv-out/frames/*.jpg + crv-out/transcript.txt + crv-out/MANIFEST.txt
その後、フレームとMANIFEST.txtをClaude / ChatGPT / Geminiにドロップして質問してください。
なぜフレームをサンプリングするだけではダメなのか?
ほとんどの「LLMにビデオを見させる」スクリプト(およびGemini自身のパイプライン)は、固定間隔(例:1秒に1フレーム)でフレームを取得します。これは静的なスクリーンキャストを過剰にサンプリングし、速いカットのリールを過小にサンプリングします。
claude-real-videoはより賢いです。
固定間隔サンプリング
claude-real-video
N秒ごとのフレーム選択
シーン変更検出 + 密度フロア
繰り返されるショット(A-B-Aカット)は毎回再度送信される
スライディングウィンドウによる重複排除は各ショットを一度だけ送信する
静的なスライド(10分) ~600個のほぼ同一のフレームが1個(重複排除)に圧縮される
速いカットのリールはサンプリング間のフレームを見逃す
各視覚的な変化を捉える
音声はしばしば無視される
言語検出付きWhisperトランスクリプト
ビデオの行き先はしばしばクラウドにアップロードされる
自分のマシン上に留まる
入力は通常ローカルファイルのみ
URL(yt-dlp)またはローカルファイル
より少なく、より意味のあるフレームをモデルに供給します — より安価なコンテキスト、より良い理解。
インストール
pip install claude-real-video # コア(フレーム + 重複排除)
pip install "claude-real-video[whisper]" # + 音声文字起こし
システム要件:ffmpeg
ffmpeg / ffprobe は、フレーム抽出と音声に使用され、pipでインストールすることはできません。一度インストールしてください:
OSコマンド
macOS brew install ffmpeg
Linux sudo apt install ffmpeg (またはディストリビューションのパッケージマネージャー)
Windows winget install Gyan.FFmpeg — または choco install ffmpeg — またはビルドをダウンロードしてその bin
フォルダをPATHに追加してください
PATH上にあることを確認してください:ffmpeg -version
文字起こしはwhisper CLIを使用します([whisper] エクストラでインストールするか、pip install openai-whisper)。Whisperもffmpegに依存しています。
macOS、Windows、Linuxで動作します — Python 3.10+。
使用法
# YouTube / Instagram / TikTok / ... のリンク
crv "https://www.instagram.com/reel/XXXX/"
# ローカルファイル、英語トランスクリプト、./outに出力
crv lecture.mp4 -o out --lang en
# フレームのみ、文字起こしなし
crv clip.mp4 --no-transcribe
# ログインが必要なビデオ(ご自身の/許可された使用):Netscape cookieファイルを渡す
crv "https://..." --cookies cookies.txt
python -m claude_real_video ... も crv のエイリアスとして機能します。
オプション
フラグ デフォルト 意味
-o, --out crv-out 出力ディレクトリ
--scene 0.30 シーン変更感度(低いほどフレームが多い)
--fps-floor 1.0 N秒ごとに少なくとも1フレーム
--max-frames 150 総フレーム数のハードキャップ
--lang auto Whisper言語(en, zh, auto, ...)
--dedup-threshold 8% 新しいフレームと見なされるために変更する必要があるピクセルの割合。高いほどフレームが少なくなる。
--dedup-window 4 直近N個の保持されたフレームと比較します — モデルがすでに見たショットは、カットアウェイ後に再度送信されません(1 = 連続のみ)。
--report off ドロップされたフレームを./droppedに保持し、report.htmlを書き込みます。各キープ/ドロップの決定を視覚化します。
--no-transcribe off 音声をスキップする
--keep-audio off 完全なサウンドトラック(audio.m4a)も保存します。これにより音声モデルが聞くことができます。
--cookies – ログインが必要なソース用のNetscape cookieファイル
Pythonから使用する
from claude_real_video import process
r = process("https://youtu.be/...", "out", lang="en")
print(r.frame_count, r.transcript_path)
仕組み
取得 — URLの場合はyt-dlp(オプションでcookieを使用)、またはローカルファイルをコピーします。
抽出 — 1回の時系列ffmpeg選択パスで、すべてのシーン変更と密度フロア(N秒ごとに少なくとも1フレーム)を取得します。これにより、速いカットと遅いスクリーンキャストの両方がカバーされます。
重複排除 — スライディングウィンドウ内の直近の保持されたフレームに対して、実際のピクセル差(知覚ハッシュではなく、ダウンサンプリングされたRGB — ハッシュは平坦な色や均一な輝度変化では機能しなくなります)を計算します。これにより、A-B-Aカットアウェイで、モデルがすでに見たショットが再度送信されるのを防ぎます。--reportは、キープ/ドロップの決定とその差のパーセンテージを示すreport.htmlを書き込み、調整に役立ちます。
テキスト — ビデオにすでに字幕がある場合(ローカルファイルに隣接するサイドカーの.srt/.vtt、または埋め込み字幕トラック)、それらがトランスクリプトとして使用されます — 再文字起こしよりも高速で正確です。字幕がない場合にのみ、音声のWhisperにフォールバックします(音声がない場合はクリーンにスキップされます)。
音声(オプション、--keep-audio) — 完全な元のサウンドトラック(audio.m4a:音楽 + スピーチ + 効果音、可能な場合はロスレスでコピー)を保存します。トランスクリプトには単語のみが含まれます。音声ファイルにより、聞くことができるモデル(Gemini、GPT-4oなど)が音楽やトーンを実際に聞くことができます。
マニフェスト — MANIFEST.txtは、モデルのためにすべてを要約します。これにより、モデルはビデオを見(キーフレーム)、読み(トランスクリプト)、そして--keep-audioを使用すれば聞く(完全なサウンドトラック)ことができます。トランスクリプトは任意のモデルが読めるプレーンテキストです。このツールは字幕をビデオに焼き付けません — 焼き付けはプレゼンテーションの選択であり、ビデオをAIで読み取り可能にするために必要なものではありません。
注記
権利のあるコンテンツのみをダウンロードしてください。--cookiesオプションは、ご自身の許可されたアクセス用です — リポジトリに認証情報を出荷しないでください。
再実行すると、出力ディレクトリが上書きされます。
ライセンス MIT