参考内容:
[1] VMAF项目地址
[2] Windows FFmpeg自动编译脚本仓库
[3] CSDN - VMAF笔记
1 VMAF简介
VMAF (Visual Multimethod Assessment Fusion - 视频质量多方法评价融合) 是由Netflix公司开发的一套主观视频质量评价体系,通过引入深度学习机制,对视频进行更符合人眼视觉的质量评分。
2 使用方法
2.1 直接使用
Usage: vmafossexec fmt width height ref_path dis_path model_path
[--log log_path] [--log-fmt log_fmt] [--thread n_thread] [--subsample n_subsample]
[--disable-clip] [--disable-avx] [--psnr] [--ssim] [--ms-ssim] [--phone-model] [--ci]
fmt:
yuv420p
yuv422p
yuv444p
yuv420p10le
yuv422p10le
yuv444p10le
log_fmt:
xml (default)
json
n_thread:
maximum threads to use (default 0 - use all threads)
n_subsample:
n indicates computing on one of every n frames (default 1)
示例:
$ vmafossexec yuv420p 1920 1080 recon.yuv comp.yuv vmaf_v0.6.1.pkl
2.2 FFmpeg filter
FFmpeg
中已经支持libvmaf
作为filter
进行处理,但需要单独进行配置
安装
在Linux下只需下载vmaf
源码直接make install
,然后使用配置./configure --enable-version3 --enable-libvmaf
重新编译ffmpeg
即可
在Windows下需要使用Visual Studio
打开.sln
文件进行编译链接等,比较复杂。可以直接使用整合好的脚本media-autobuild_suite
[2]进行编译。
使用
$ ./ffmpeg \
-s 1920x1080 -i recon.yuv \
-s 1920x1080 -i comp.yuv \
-lavfi libvmaf ="model_path=/path/to/vamf/pkl" \
-f null –
P.S. 输出问题
正常情况ffmpeg
会输出大量的中间信息,在调试中经常起到很大的作用。但在使用vmaf
评价批处理时,多余的输出反而无用,这时候可以通过控制./ffmpeg -v log_level
进行设置,比如将log_level
设为0
,输出将只有:
Start calculating VMAF score...
Exec FPS: 7.788159
VMAF score = 85.359323