mcpField
V
video-comparer

video-comparer

github.com/daymadeクリエイティブ・メディア1.5k958 回インストール今日更新
リポジトリ

video-comparer について

video-comparerは、元動画と圧縮動画を比較し、品質指標を含むインタラクティブなHTMLレポートを作成するスキルです。圧縮結果やコーデック、ビットレートの変化を評価する用途に向いています。

主な機能

  1. 01PSNRとSSIMによる品質指標
  2. 02動画メタデータの比較
  3. 03フレームごとの視覚比較
  4. 04スライダー・並列・グリッド表示
  5. 05オフラインHTMLレポートの生成

活用シーン

  1. 01圧縮後の動画品質の評価
  2. 02コーデックやビットレートの比較
  3. 03フレーム間の視覚的な差異の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/daymade/claude-code-skills --skill video-comparer

インストール後、Claude Code で/video-comparerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
assets/
template.html
references/
configuration.md
ffmpeg_commands.md
video_metrics.md
scripts/
compare.py

詳細

Video Comparer

概要

2 本の動画を比較し、圧縮結果を分析するインタラクティブな HTML レポートを生成します。スクリプトは動画のメタデータを抽出し、品質指標(PSNR、SSIM)を計算して、スライダー、左右表示、グリッドの 3 つの表示モードでフレームごとの視覚的な比較を作成します。

このスキルを使用する場面

次の場合にこのスキルを使用します。

  • オリジナル動画と圧縮動画を比較する場合
  • 動画の圧縮品質と効率を分析する場合
  • コーデックの性能やビットレート削減の影響を評価する場合
  • ユーザーが「動画を比較」「動画の品質」「圧縮分析」「圧縮前/圧縮後」などに言及した場合

基本的な使い方

基本コマンド
python3 scripts/compare.py original.mp4 compressed.mp4

comparison.html を生成します。次の内容が含まれます。

  • 動画のパラメーター(コーデック、解像度、ビットレート、再生時間、ファイルサイズ)
  • 品質指標(PSNR、SSIM、サイズ/ビットレートの削減率)
  • フレームごとの比較(デフォルト:5 秒間隔のフレーム)
コマンドオプション
# Custom output file
python3 scripts/compare.py original.mp4 compressed.mp4 -o report.html

# Custom frame interval (larger = fewer frames, faster processing)
python3 scripts/compare.py original.mp4 compressed.mp4 --interval 10

# Batch comparison
for original in originals/*.mp4; do
    compressed="compressed/$(basename "$original")"
    output="reports/$(basename "$original" .mp4).html"
    python3 scripts/compare.py "$original" "$compressed" -o "$output"
done

要件

システム依存関係

FFmpeg と FFprobe(動画の分析とフレーム抽出に必要です):

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# Windows
# Download from https://ffmpeg.org/download.html
# Or use: winget install ffmpeg

Python 3.8+(型ヒント、f-string、pathlib を使用します)

動画の仕様
  • 対応形式: .mp4(推奨)、.mov、.avi、.mkv、.webm
  • ファイルサイズの上限: 動画 1 本につき 500MB(変更可能)
  • 処理時間: 一般的な動画の場合、約 1~2 分です。再生時間とフレーム間隔によって異なります

スクリプトの動作

自動検証

スクリプトは次の項目を自動的に検証します。

  • FFmpeg/FFprobe のインストールと利用可否
  • ファイルの存在、拡張子、サイズ上限
  • パスのセキュリティ(ディレクトリトラバーサルを防止)

検証に失敗すると、解決方法を示す明確なエラーメッセージが表示されます。

品質指標

スクリプトは、標準的な品質指標を 2 つ計算します。

PSNR(ピーク信号対雑音比): ピクセル単位の類似度を測定します(20~50 dB の範囲で、値が高いほど良好です)。

SSIM(構造的類似度指標): 知覚的な類似度を測定します(0.0~1.0 の範囲で、値が高いほど良好です)。

詳細な解釈尺度と品質のしきい値については、references/video_metrics.md を参照してください。

フレーム抽出

スクリプトは指定された間隔(デフォルト:5 秒)でフレームを抽出し、比較しやすいように高さを統一(800px)して、自己完結型 HTML 内に Base64 データ URL として埋め込みます。処理後、一時ファイルは自動的に削除されます。

出力レポート

生成される HTML レポートには、次の機能が含まれます。

  • スライダーモード: スライダーを動かしてオリジナルと圧縮版を切り替えます(デフォルト)
  • 左右表示モード: 直接比較できるよう、2 つを同時に表示します
  • グリッドモード: 2 列のコンパクトなレイアウトで表示します
  • ズーム操作: 50%~200% の拡大率
  • 自己完結型の形式(サーバー不要、オフラインで動作)

実装に関する重要事項

セキュリティ

スクリプトでは、次の対策を実施しています。

  • パスの検証(絶対パスの使用、ディレクトリトラバーサルの防止)
  • コマンドインジェクションの防止(shell=True を使用せず、引数を検証)
  • リソースの制限(ファイルサイズ、タイムアウト)
  • カスタム例外:ValidationError、FFmpegError、VideoComparisonError
よくあるエラーの状況

「FFmpeg が見つかりません」:プラットフォームのパッケージマネージャーから FFmpeg をインストールしてください(「要件」セクションを参照)。

「ファイルサイズが大きすぎます」:比較の前に動画を圧縮するか、scripts/compare.py の MAX_FILE_SIZE_MB を変更してください。

「操作がタイムアウトしました」:FFMPEG_TIMEOUT 定数を増やすか、より大きな --interval 値を指定してください(処理するフレーム数が減ります)。

「フレーム数が一致しません」:動画の再生時間またはフレームレートが異なります。スクリプトはフレーム数の少ない方に自動で切り詰め、警告を表示します。

設定

スクリプトには、ファイルサイズの上限、タイムアウト、フレーム寸法、抽出間隔を調整する定数が含まれています。動作をカスタマイズするには、scripts/compare.py の冒頭にある定数を編集してください。詳細な設定オプションとその影響については、references/configuration.md を参照してください。

参考資料

詳細については、以下のファイルを参照してください。

  • references/video_metrics.md:品質指標の解釈(PSNR/SSIMの尺度、圧縮の目標、ビットレートのガイドライン)
  • references/ffmpeg_commands.md:FFmpegコマンドのリファレンス(メタデータの抽出、フレームの抽出、トラブルシューティング)
  • references/configuration.md:スクリプトの設定オプションと調整可能な定数
  • assets/template.html:表示モードとスタイルをカスタマイズするためのHTMLレポートテンプレート

コメント