【音视频】测评工具VMAF

PS:学习地址Mac安装教程:https://testerhome.com/topics/25083

命令汇总

# 编译环境准备
brew install gcc meson doxygen nasm freetype pkg-config hdf5
brew install numpy scipy

# 下载源码
git clone https://github.com/Netflix/vmaf.git
cd vmaf
git submodule update --init --recursive

# 编译
make

# 下载 VMAF 并安装
cd python
pip3 install cython
pip3 install -r requirements.txt
pip3 install --user .   # 此时,会出现各种报错

# 环境变量配置
vim ~/.bash_profile 
source ~/.bash_profile 

# 在 vmaf 根目录下,
./unittest


# PyCharm执行,
which python
python ./vmaf/script/run_vmaf.py yuv420p 576 324 test/resource/yuv/src01_hrc00_576x324.yuv test/resource/yuv/src01_hrc01_576x324.yuv --out-fmt json

报错汇总

# 编译环境准备时:
报错1:
Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins

解决1:
sudo chown -R $(whoami) $(brew --prefix)/*
# 下载 VMAF 并安装:
报错2:

ninja: build stopped: subcommand failed.

解决2:其实不影响后续的执行,但是在最终运行的时候会报错。我是通过替换tools的文件解决的。

在这里插入图片描述

报错3:
vmaf/core/adm_dwt2_cy.c:634:10: fatal error: '../../../libvmaf/src/feature/adm.c' file not found
    #include "../../../libvmaf/src/feature/adm.c"

             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决3:修改相关路径为绝对路径

# 文件路径:
/vmaf/python/vmaf/core
vim adm_dwt2_cy.pyx

# 重新执行
pip3 install -r requirements.txt
pip3 install --user .

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

报错4:
#warning "Using deprecated NumPy API, disable it with " \

^

In file included from vmaf/core/adm_dwt2_cy.c:636:

/Users/meizhuo/vmaf/libvmaf/src/feature/adm_tools.c:27:10: fatal error: 'mem.h' file not found

#include "mem.h"

        ^~~~~~~

解决4:
cd libvmaf/src/feature/
cp /Users/XXXX/vmaf/libvmaf/src/mem.h .
# 执行Python文件命令:
python ./vmaf/script/run_vmaf.py yuv420p 576 324 test/resource/yuv/src01_hrc00_576x324.yuv test/resource/yuv/src01_hrc01_576x324.yuv --out-fmt json
报错5:
ModuleNotFoundError: No module named 'vmaf'

解决5:

/vmaf/python/vmaf/script/run_vmaf.py
curpath = os.path.abspath(os.path.dirname(__file__))
root_path = os.path.split(os.path.split(curpath)[0])[0]
if root_path not in sys.path:
    sys.path.append(root_path)

/vmaf/python/vmaf/svmutil.py
if VmafConfig.root_path() not in sys.path:
sys.path.append(VmafConfig.root_path())

成功标志在这里插入图片描述

答疑记录

  1. 如何获取时间戳完全对准的yuv文件?
  • 采集与编码-解码后的数据,帧数完全一致
  • 格式:AVC?可转换成yuv文件
  1. 只能做上行-推流端的网络损失情况?
  • 一个源文件(参照对象),通过SDK层的录制,进行不同网络下的对比流
  • 原因:不能做下行的是因为获取接收端的流是经过损失的,与源流没有对比性。
  1. 播放端的延时自动获取?
  • 原理:将时间戳打在关键帧/每一帧里,接收端进行解码解出时间戳,进行差值
  • SCDN可用原因:秒/s级别的,RTC都是毫秒/ms级别的无法区分
  1. 问题记录:
  • 视频打分(纯RTC)
    VMAF工具(有参考)使用,不同丢包率下的打分变化不大
    提供开播采集的视频频 + 编码后的视频
  • 音频打分(所有SDK)
    新工具(无参考)调研
    可提供开播采集的音频 + 接收端的音频,日志上报?
  • 延时(所有SDK)
    开启SEI, 存储在文件里,高丢包情况下的延时做参考
    人工掐表,提供正常下的延时
  • 视频丢包视频录制:(所有SDK)
    rtc拉流
  • 超低延时直播提供录制:(纯RTC)
    rtc拉流
    srt拉流
    flv拉流
  • 进房间成功率 + 时延
    自动化跑1h、6h、1天,code = 200的统计
    Joinroom 到推流的时间差?首帧数据上报
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值