VMAF (Video Multi-Method Assessment Fusion) 是 Netflix 开发的开源视频质量评估工具,版本 3.0 是其一个重要更新。它的主要作用是视频质量评估:通过机器学习模型综合多种质量指标,预测人类对视频质量的主观感受,提供 0-100 分的 VMAF 分数,分数越高表示质量越好。另外,它具有多种评估模型,包含手机观看、4K 等不同场景的评估模型。
接下来以 linux 系统为例进行介绍,首先是安装依赖项。
sudo yum groupinstall "Development Tools"
sudo yum install -y git meson nasm doxygen
sudo yum install -y python3 python3-pip python3-setuptools
sudo yum install -y epel-release
sudo yum install -y python3-scipygit clone https://github.com/Netflix/vmaf.git
cd vmaf
git checkout v3.0.0执行如下命令进行代码编译:
cd libvmaf
meson build --buildtype release
ninja -C build
sudo ninja -C build install设置动态库链接地址:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/vmaf.conf
sudo ldconfig执行 vmaf 命令进行验证:
vmaf --version如果需要编译到 ffmpeg 中,需要在执行 configure 命令时 ,指定参数 --enable-libvmaf。
两种使用方式,下面分别介绍。
vmaf -r reference.yuv -d distorted.yuv -w 1920 -h 1080 -p 420 -b 8ffmpeg -i distorted.mp4 -i reference.mp4 -lavfi libvmaf -f null -执行如下命令报错:
meson setup builddir --default-library=static --prefix=/tools/ffmpeg -Denable_avx512=false解决: sudo yum install meson
报错详情:
The Meson build system
Version: 0.55.1
Source dir: /tools/vmaf-3.0.0/libvmaf
Build dir: /tools/vmaf-3.0.0/libvmaf/builddir
Build type: native build
meson.build:1:0: ERROR: Meson version is 0.55.1 but project requires >= 0.56.1
A full log can be found at /tools/vmaf-3.0.0/libvmaf/builddir/meson-logs/meson-log.txt解决:
pip3 install --upgrade meson输出如下信息表示升级成功:
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting meson
Downloading http://mirrors.jd.com/pypi/packages/18/db/3feb3cfa102553b9329d0c887b3c10480381de69abf6e8629f6b32f450df/meson-0.61.5-py3-none-any.whl (862kB)
100% |████████████████████████████████| 870kB 134.3MB/s
Installing collected packages: meson
Successfully installed meson-0.61.5报错详情:
The Meson build system
Version: 0.61.5
Source dir: /tools/vmaf-3.0.0/libvmaf
Build dir: /tools/vmaf-3.0.0/libvmaf/builddir
Build type: native build
Project name: libvmaf
Project version: 3.0.0
C compiler for the host machine: cc (gcc 4.8.5 "cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)")
C linker for the host machine: cc ld.bfd 2.27-44
meson.build:1:0: ERROR: Unknown compiler(s): [['c++'], ['g++'], ['clang++'], ['nvc++'], ['pgc++'], ['icpc']]
The following exception(s) were encountered:
Running "c++ --version" gave "[Errno 2] No such file or directory: 'c++': 'c++'"
Running "g++ --version" gave "[Errno 2] No such file or directory: 'g++': 'g++'"
Running "clang++ --version" gave "[Errno 2] No such file or directory: 'clang++': 'clang++'"
Running "nvc++ --version" gave "[Errno 2] No such file or directory: 'nvc++': 'nvc++'"
Running "pgc++ --version" gave "[Errno 2] No such file or directory: 'pgc++': 'pgc++'"
Running "icpc --version" gave "[Errno 2] No such file or directory: 'icpc': 'icpc'"
A full log can be found at /tools/vmaf-3.0.0/libvmaf/builddir/meson-logs/meson-log.txt
NOTICE: You are using Python 3.6 which is EOL. Starting with v0.62.0, Meson will require Python 3.7 or newer解决:
sudo yum install gcc-c++注意:删除 builddir 目录,重新执行编译命令。
报错详情:
The Meson build system
Version: 0.61.5
Source dir: /tools/vmaf-3.0.0/libvmaf
Build dir: /tools/vmaf-3.0.0/libvmaf/builddir
Build type: native build
Project name: libvmaf
Project version: 3.0.0
C compiler for the host machine: cc (gcc 4.8.5 "cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)")
C linker for the host machine: cc ld.bfd 2.27-44
C++ compiler for the host machine: c++ (gcc 4.8.5 "c++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)")
C++ linker for the host machine: c++ ld.bfd 2.27-44
Host machine cpu family: x86_64
Host machine cpu: x86_64
Check usable header "stdatomic.h" : NO
Checking if "GCC-style atomics" compiles: YES
Configuring version.h using configuration
Program nasm found: NO
src/meson.build:61:8: ERROR: Program 'nasm' not found or not executable
A full log can be found at /tools/vmaf-3.0.0/libvmaf/builddir/meson-logs/meson-log.txt
NOTICE: You are using Python 3.6 which is EOL. Starting with v0.62.0, Meson will require Python 3.7 or newer解决:
sudo yum install nasm注意:删除 builddir 目录,重新执行编译命令。
报错详情:
[46/141] Compiling C object test/test_cambi.p/test_cambi.c.o
FAILED: test/test_cambi.p/test_cambi.c.o
cc -Itest/test_cambi.p -Itest -I../test -Iinclude -I../include -Isrc -I../src -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c11 -O3 -D_GNU_SOURCE -MD -MQ test/test_cambi.p/test_cambi.c.o -MF test/test_cambi.p/test_cambi.c.o.d -o test/test_cambi.p/test_cambi.c.o -c ../test/test_cambi.c
In file included from ../test/test_cambi.c:20:0:
../src/ref.h:22:23: fatal error: stdatomic.h: No such file or directory解决:增加 -Dtests=false 选项。
报错详情:
../src/svm.cpp: In instantiation of ‘SVMModelParser<TSource>::SVMModelParser(TSource&&) [with TSource = SVMModelParserBufferSource]’:
../src/svm.cpp:3168:74: required from here
../src/svm.cpp:3023:79: error: use of deleted function ‘SVMModelParserBufferSource::SVMModelParserBufferSource(SVMModelParserBufferSource&&)’
SVMModelParser(TSource&& model_source) : model_source(std::move(model_source)) {}
^
../src/svm.cpp:2983:7: note: ‘SVMModelParserBufferSource::SVMModelParserBufferSource(SVMModelParserBufferSource&&)’ is implicitly deleted because the default definition would be ill-formed:
class SVMModelParserBufferSource {解决:
修改构造函数:
SVMModelParser(TSource& model_source) : model_source(model_source) {}原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。