クロスプラットフォームに対応し、フィルタの有無、エンコード設定の差異による目視確認に便利なvideo-compareの紹介。WindowsバイナリはReleasesページで配布していて、コンソールから起動する。

GitHub – pixop/video-compare: Split screen video comparison tool using FFmpeg and SDL2

基本コマンド

ヘルプを表示。
video-compare -h

バージョンを表示。
video-compare -V

左側にvideo1.mp4、右側にvideo2.mp4の順番で再生する。
video-compare video1.mp4 video2.mp4

再生画面(GitHubより引用)

高DPIモードで再生する。
video-compare -d video1.mp4 video2.mp4

10ビット深度モードで再生する。無指定は8ビット深度。
video-compare -b video1.mp4 video2.mp4

2つの映像をvstackでは縦に並べる。hstackは横に並べる。無指定、またはsplitは2つの映像を重ねる。
video-compare -m vstack video1.mp4 video2.mp4

指定した解像度(横幅x縦幅)で再生する。
video-compare -w 1920x1080 video1.mp4 video2.mp4

指定した秒だけ右側の映像のタイムスタンプをずらす。
video-compare -t 1.5 video1.mp4 video2.mp4

-lで左の映像にffmpegのフィルタを、-rで右の映像にffmpegのフィルタを当てる。ffmpegと同様のフィルタチェーンが使える。
video-compare -l extractplanes=y -r lutyuv=negval:negval:negval video1.mp4 video2.mp4

420サブサンプリングのとき、輝度と彩度を横に並べる。
video-compare -l “extractplanes=y+u+v,xstack=3:0_0|w0_0|w0_h1” -r “extractplanes=y+u+v,xstack=3:0_0|w0_0|w0_h1” video1.mp4 video2.mp4

420サブサンプリングのとき、輝度と彩度を上下に並べる。
video-compare -l “extractplanes=y+u+v,xstack=3:0_0|0_h0|w1_h0” -r “extractplanes=y+u+v,xstack=3:0_0|0_h0|w1_h0” video1.mp4 video2.mp4

各映像チャンネルを分離する extractplanes
解像度が一致しなくても映像を並べられる xstack

自動認識しないVapourSynthはデマクサを直接指定する。
video-compare --left-demuxer vapoursynth script.vpy video.mp4

ハードウェア支援のcudaでデコードする。左右で異なるコーデックでも対応していればデコードできる。
video-compare --hwaccel cuda video1.mp4 video2.mp4

左右の映像に-iで同じフィルタを__で指定する例。デマクサやデコーダ、ハードウェア支援でも同じように使える。
video-compare -i lutyuv=val:128:128 -l avgblur,__ -r __,dblur video1.mp4 video2.mp4

ショートカットキー

基本操作

  • H:スクリーン上にヘルプ文の表示/非表示の切り替え
  • V:スクリーン上に映像情報のメタデータの表示/非表示の切り替え
  • Space:再生/一時停止の切り替え
  • コンマ:双方向のバッファ内ループ/一時停止を切り替える
  • ピリオド:前方向のみのバッファ内ループ/一時停止を切り替える
  • Escape:終了
  • 下向き矢印:15秒前にシーク
  • 左向き矢印:1秒前にシーク
  • ページダウン:600秒前にシーク
  • 上向き矢印:15秒先にシーク
  • 右向き矢印:1秒先にシーク
  • ページアップ:600秒先にシーク
  • J:再生速度を下げる
  • L:再生速度を上げる
  • I:既存のBILINEAR、BICUBICにリサイズアルゴリズム切り替え。ズームした時に変化する
  • T:既存のBILINEAR、NEAREST NEIGHBORにリサイズアルゴリズム切り替え。ズームした時に変化する
  • S:左右の映像を入れ替え
  • A:一時停止中時に前のフレームに移動。一度再生してバッファをためないと移動できない
  • D:一時停止中時に次のフレームに移動。一度再生してバッファをためないと移動できない
  • F:両方のフレームをPNG画像として現在のディレクトリに保存
  • P:マウスカーソル下の位置のピクセル値をコンソールに表示
  • M:PSNR, SSIM, VMAFをコンソールに表示
  • Z:カーソル周辺を拡大し、結果を左下に表示
  • C:カーソル周辺を拡大し、結果を右下に表示
  • R:映像を中心に戻し、ズームを100%にリセット (x1)
  • 1:左側の映像を非表示/表示の切り替え
  • 2:右側の映像を非表示/表示の切り替え
  • 3:HUD(Head Up Display)の非表示/表示の切り替え
  • 4:1:1のピクセル比にズーム
  • 5:50%ズーム (x0.5)
  • 6:100%ズーム (x1)
  • 7:200%ズーム (x2)
  • 8:400%ズーム (x4)
  • 9:800%ズーム (x8)
  • 0:映像/差分モードの切り替え
  • +:右側の映像を1フレーム先にタイムシフト
  • -:右側の映像を1フレーム前にタイムシフト
  • X:フレームレートを画面上に表示
  • Y:サブトラクションモードの切り替え
  • U:輝度だけのサブトラクションモードの非表示/表示の切り替え

発展操作

  • P:マウスカーソル下の位置とピクセル値をコンソールに表示
  • M:画像の類似度メトリクスをコンソールに表示
  • F:両方のフレームおよび画面表示内容を PNG 画像として保存
  • I:入力位置合わせ用のリサイズ方式(バイリニア/バイキュービック)を切り替え
  • T:ビデオテクスチャのフィルタリング方式(最近傍/バイリニア)を切り替え
  • Y:差分(減算)モードを順に切り替え
  • U:輝度のみの減算モードを切り替え
  • X:現在のビデオフレーム更新率と UI 更新率(FPS)を表示
  • Shift + F1:ヒストグラム(histogram)ウィンドウの表示/非表示を切り替え
  • Shift + F2:ベクタースコープ(vectorscope)ウィンドウの表示/非表示を切り替え
  • Shift + F3:波形モニター(waveform)ウィンドウの表示/非表示を切り替え
  • Alt + Enter:フルスクリーンの切り替え、または-u/--fullscreen
  • Backspace:設定されたクロップ(切り抜き)をクリア
  • Shift + L:左側ビデオを対話的にクロップ
  • Shift + R:右側ビデオを対話的にクロップ
  • Shift + B:両方のビデオを同一領域にクロップ
  • Shift + D:1フレームをデコードして次へ進む
  • Shift + A:前のイントラフレームへシーク
  • Shift + M:表示モードを切り替え
  • Shift + S:アスペクト表示モードを切り替え、または-x/--aspect-view-mode
  • Shift + F:領域を選択し、切り抜きをPNGとして保存
  • Shift + X:現在の表示状態をコンソールに出力
  • Shift + W:保存済みのウィンドウサイズを復元
  • Ctrl + W:起動時のウィンドウサイズを復元
  • Ctrl + Shift + W:現在のウィンドウサイズを保存
  • Ctrl + Shift + 1..0:右側ビデオの 1〜10 を直接切り替え
  • Ctrl + C / Cmd + C:左側ビデオの現在のタイムスタンプをクリップボードにコピー
  • Ctrl + V / Cmd + V:クリップボードのタイムスタンプを貼り付け、その位置へシーク
  • Ctrl + + / -:右側ビデオを 10 フレーム単位で時間シフト
  • Alt + + / -:右側ビデオを 100 フレーム単位で時間シフト

補足

  • 可動スライダーの位置はマウス移動で調整できる
  • マウスホイールを使用して、カーソル下のピクセルを拡大/縮小する。右クリックしながらマウスを移動すると表示する映像の場所も変えられる
  • マウスを左クリックすると、マウスカーソルの水平位置がウィンドウ幅に相対する時間にシークする(時間はは右下に表示される)
  • 同じファイルを2つ読み込まずに、2つ目を__指定しても読み込める。ファイル以外でも--filters (-i), --demuxer, --decoder, --hwaccelでも同じ指定ができる
  • 色やレンジのメタデータが無指定のときはリミテッドレンジのbt709になる
  • 色やレンジを左右同時に指定するときは--color-space (-C)--color-range (-A)--color-primaries (-P)--color-trc (-N)を使う。設定値の例
  • 左だけ別に指定する例は-l setparams=colorspace=bt709:color_primaries=bt709:color_trc=bt709
  • HLGとHDR10の映像はsRGBに強制変換される
  • -L, -Rで左右のpeak light levelを指定する。既定値は500。zscale=npl=%dで指定される
  • -TでSDR映像のトーンを調整して、実際のHDRディスプレイ上の2つのビデオ間の相対的なライトレベルの差をシミュレートする。tonemap=clip:param=0.33333で指定される
  • --subtraction-mode(-S)でサブトラクションモード
  • -o/--options-fileで設定ファイルを読み込む。ファイル名をvideo-compare.optにすると起動時に自動的に読み込む
  • -V/--versionでバージョンを表示

ハードウェアデコード

--right-decoder、--left-decoderで、デコーダ名の指定。--decoderで左右同じデコーダを指定する。

QSV

  • h264_qsv
  • mjpeg_qsv
  • mpeg2_qsv
  • hevc_qsv
  • vc1_qsv
  • vp8_qsv
  • vp9_qsv
  • av1_qsv

NVDEC

  • h264_cuvid
  • hevc_cuvid
  • mjpeg_cuvid
  • mpeg1_cuvid
  • mpeg2_cuvid
  • mpeg4_cuvid
  • vc1_cuvid
  • vp8_cuvid
  • vp9_cuvid
  • av1_cuvid

AMFDEC

  • av1_amf
  • h264_amf
  • hevc_amf
  • vp9_amf

--right-hwaccel、--left-hwaccelで、ハードウェアデコード支援デバイスの指定。--decoderで左右同じデコーダを指定する。

  • cuda
  • d3d12va
  • d3d11va
  • dxva2
  • vulkan
  • videotoolbox

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)