视频质量评估工具VMAF的使用

一。 安装 vmaf
       git clone https://github.com/Netflix/vmaf.git
       cd vmaf
       git submodule update --init --recursive
       make
       echo export PYTHONPATH="$(pwd)/python/src:$(pwd)/sureal/python/src:$PYTHONPATH" >> ~/.bash_profile
       source ~/.bash_profile

二。验证VMAF
       vmaf 源码里带了一些用于测试的视频:
       ./run_vmaf yuv420p 576 324 \
        python/test/resource/yuv/src01_hrc00_576x324.yuv \
        python/test/resource/yuv/src01_hrc01_576x324.yuv \
        --out-fmt json
       # 执行成功有以下输出
      "aggregate": {
      "VMAF_feature_adm2_score": 0.9345878041226809,
      "VMAF_feature_motion2_score": 3.8953518541666665,
      "VMAF_feature_vif_scale0_score": 0.36342081156994926,
      "VMAF_feature_vif_scale1_score": 0.7666473878461729,
      "VMAF_feature_vif_scale2_score": 0.8628533892781629,
      "VMAF_feature_vif_scale3_score": 0.9159718691393048,
      "VMAF_score": 76.69927060701059,
      "method": "mean"
   }
  从输出可以看出对转码前和转码后的两个视频逐帧比较,从 6 个维度评分,最后是总分 VMAF_score 。
试完往下看 README,发现 vmaf 提供了一个 ffmpeg2vmaf 命令,不用自己输出 .yuv 格式。在 ${your-vmaf-path}/vmaf/python/src/vmaf/externals.py 里加一行 ffmpeg 路径:
 FFMPEG_PATH = "/usr/local/bin/ffmpeg"
# 继续转几个不同质量的视频:
ffmpeg -i split.mkv -c:v libx265 -crf 51 crf51.mkv
ffmpeg -i split.mkv -c:v libx265 -crf 27 crf27.mkv

# 评分
./ffmpeg2vmaf 1920 1080 split.mkv crf27.mkv --out-fmt json > crf27.json
./ffmpeg2vmaf 1920 1080 split.mkv crf28.mkv --out-fmt json > crf28.json
./ffmpeg2vmaf 1920 1080 split.mkv crf51.mkv --out-fmt json > crf51.json

三。使用方法
3.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) 

3.2  通过ffmpeg调用
现在的ffmpeg已经集成了vmaf库,作为一个滤镜存在操作。在libavfilter目录下vf_libvmaf.c文件。在Linux下只需下载vmaf源码直接make & make install
make 生成 libvmaf.a文件,
install 负责将这些.a(静态链接库文件)拷贝到用户的系统目录下。同时.h文件,model文件夹(早就生成的,回头填坑)以及.pc文件也被拷贝到相应的路径里。
libvaf.h文件,会被ffmpeg的vf_libvmaf.c文件包含,所以,FFMPEG通过调用C函数,找到对应的函数实现的头文件,再由头文件找到libvmaf.a,实现vmaf的计算
libvmaf.pc是专门供pkgconfig工具识别的,可以理解为帮助ffmpeg找到libvmaf.a.
视频质量评估工具VMAF的使用_第1张图片

然后使用配置./configure --enable-version3 --enable-libvmaf重新编译ffmpeg即可。

使用:

$ ./ffmpeg \
-s 1920x1080 -i recon.yuv \
-s 1920x1080 -i comp.yuv \
-lavfi libvmaf ="model_path=/path/to/vamf/pkl" \
-f null –

 

你可能感兴趣的:(音视频)