video-comparer について
video-comparerは、元動画と圧縮動画を比較し、品質指標を含むインタラクティブなHTMLレポートを作成するスキルです。圧縮結果やコーデック、ビットレートの変化を評価する用途に向いています。
主な機能
- 01PSNRとSSIMによる品質指標
- 02動画メタデータの比較
- 03フレームごとの視覚比較
- 04スライダー・並列・グリッド表示
- 05オフラインHTMLレポートの生成
活用シーン
- 01圧縮後の動画品質の評価
- 02コーデックやビットレートの比較
- 03フレーム間の視覚的な差異の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill video-comparerインストール後、Claude Code で/video-comparerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdassets/template.htmlreferences/configuration.mdffmpeg_commands.mdvideo_metrics.mdscripts/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レポートテンプレート