ffmpeg 4.4から使える予定のフィルタ。2つの映像は同じ解像度、ピクセルフォーマットでなければならない。メタデータに出力できるのでffprobe連携しやすい。
ffprobe の使い方

framesyncに対応しているので片方の出力が終わったら終了するようにできる。
2ファイル入力するフィルタの挙動設定 framesync

基本コマンド

オプション設定はなし。出力値は0から1までの小数。変化が少ないほど0に近づく。
ffmpeg -i 調べたい動画 -i 元の動画 -filter_complex "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[0v];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[1v];[0v][1v]scale2ref=flags=bicubic,msad=shortest=1:repeatlast=0" -an -f null -

ffmpeg 5.1以降はts_sync_mode対応したのでsettb=1/AVTB,setpts=PTS-STARTPTSが不要になった。
ffmpeg -i 調べたい動画 -i 元の動画 -filter_complex "scale2ref=flags=bicubic,msad=shortest=1:repeatlast=0:ts_sync_mode=1" -an -f null -

公式ドキュメント:FFmpeg Filters Documentation : msad

メタデータ出力内容。

lavfi.msad.msad.Y
lavfi.msad.msad.U
lavfi.msad.msad.V
lavfi.msad.msad_avg

ffprobe連携例。出力時間は-read_intervalsで指定。
ffprobe -f lavfi -i movie=enc.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[0];movie=orig.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[1];[0][1]scale2ref=flags=bicubic,msad -show_entries packet_tags=lavfi.msad.msad_avg -read_intervals "%1" > msad_avg.txt

ffprobe の使い方

コメントを残す

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

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