Netflix が使っている複数の解像度にエンコードされた動画の品質評価に使われている VMAF(Video Multimethod Assessment Fusion) のモーションスコアの計算が ffmpeg で使えるようになった。
vmaf モーションスコアを計算するフィルタは2つあり、この vmafmotion
と ./configure --enable-libvmaf
でライブラリをインストールして使える libvmaf
フィルタがある。前者は1つの映像の vmaf モーションスコアを計算し、後者は2つの映像を比較した vmaf モーションスコアを計算する。これらのフィルタは異なる解像度でも品質評価ができ ssim, psnr
フィルタよりも見た目の評価に近しいものを目指している。数値が 0 になると前フレームからの変化が無いことを示す。
使い方は先に元動画の vmaf モーションスコアを計算し、次にエンコードした動画の vmaf モーションスコアを計算し何割減ったかを調べる。
Netflix/vmaf: Perceptual video quality assessment based on multi-method fusion.
Toward A Practical Perceptual Video Quality Metric – Netflix TechBlog – Medium
基本コマンド
vmaf モーションスコアを計算しエンコードが終わると平均 vmaf モーションスコアをコンソールに表示する
ffmpeg -i input -vf vmafmotion -an -f null -
さらにフレーム毎の vmaf モーションスコアを log.txt のテキストファイルで出力する
ffmpeg -i input -vf vmafmotion=log.txt -an -f null -
公式ドキュメント:FFmpeg Filters Documentation : vmafmotion
オプション
stats_file[string]
すべてのフレームの平均 vmaf モーションスコアを表示したログファイルを指定したパスに出力する
既定値:無指定(何も出力しない)