slhck/ffmpeg-quality-metrics

Calculate quality metrics with FFmpeg (SSIM, PSNR, VMAF, VIF)

解決する問題

ビデオを圧縮またはトランスコードするとき、元のビデオと比較してどれだけ品質が失われたかを知る必要があることがよくあります。このツールは、歪んだ(エンコードされた)ビデオを参照(元の)ビデオと比較して、PSNR、SSIM、VIF、MSAD、VMAFなどの標準的なビデオ品質メトリクスを計算します。FFmpegコマンドを手動で配線し、生の出力を解析する手間を省き、フレームごとの数値、全体統計(最小/最大/平均/標準偏差)、およびオプションのインタラクティブなブラウザダッシュボードを提供します。

仕組み

2つのビデオファイルを指定します:歪んだバージョンと参照バージョン(例:ffmpeg-quality-metrics distorted.mp4 reference.y4m)。ツールは内部でFFmpegを使用して両方のストリームをデコードし、歪んだビデオを参照の解像度に自動的にスケーリングし、要求されたメトリクスフィルタを適用します。まずffprobeで両方の入力をプローブし、解像度、フレームレート、または期間の違いについて警告します。次にFFmpegを実行し、フレームごとのメトリクス値を収集します。デフォルトではPSNRとSSIMを計算します。--metricsオプションで他のメトリクスを有効にできます。出力はJSONまたはCSVで、結果を視覚的に探索するためのWebベースのGUIを起動することもできます。

VMAFについては、異なるモデルファイル(新しいv1モデルを含む)を選択し、フィーチャーフラグや10ビット変換などの追加パラメータを渡すことができます。また、分析を特定のフレーム数に制限したり、特定のタイムスタンプまたはフレーム番号から開始したりできます。ツールは位置ずれを処理します:--dist-delayを使用して一致しない先行フレームをトリムし、比較前に両方のビデオを時間同期させます。

対象ユーザー

ビデオエンジニア、品質保証チーム、研究者、またはビデオをエンコードし、客観的な品質スコアを必要とするすべての人。これはコマンドラインツールで、Python 3.10+とFFmpeg 7.1+(VMAFを使用する場合はlibvmaf)が必要です。Linux、macOS、Windowsで動作し、pip、pipx、uvxでインストールするか、Dockerで実行できます。

ハイライト

  • 5つのメトリクスをサポート:PSNR、SSIM、VIF、MSAD、VMAF。
  • フレームごとのメトリクスと全体統計(最小/最大/平均/標準偏差)を出力。
  • オプションのブラウザベースのインタラクティブダッシュボードで視覚分析。
  • 入力を自動的にスケーリングおよび整列し、不一致について詳細な警告を提供。
  • 柔軟な制御:メトリクス、モデルファイル、フレーム範囲、開始オフセットを選択。
  • JSONまたはCSVを出力し、標準出力またはファイルに書き込み。
  • CLIまたはPythonライブラリ(API)として動作。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト