zoukankan      html  css  js  c++  java
  • 【音视频】测评工具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文件?
      1. 采集与编码-解码后的数据,帧数完全一致
      2. 格式:AVC?可转换成yuv文件
    2. 只能做上行-推流端的网络损失情况?
      1. 一个源文件(参照对象),通过SDK层的录制,进行不同网络下的对比流
      2. 原因:不能做下行的是因为获取接收端的流是经过损失的,与源流没有对比性。
    3. 播放端的延时自动获取?
      1. 原理:将时间戳打在关键帧/每一帧里,接收端进行解码解出时间戳,进行差值
      2. SCDN可用原因:秒/s级别的,RTC都是毫秒/ms级别的无法区分

    问题记录:

    1. 视频打分(纯RTC)
      1. VMAF工具(有参考)使用,不同丢包率下的打分变化不大
      2. 提供开播采集的视频频 + 编码后的视频
    2. 音频打分(所有SDK)
      1. 新工具(无参考)调研
      2. 可提供开播采集的音频 + 接收端的音频,日志上报?
    3. 延时(所有SDK)
      1. 开启SEI, 存储在文件里,高丢包情况下的延时做参考
      2. 人工掐表,提供正常下的延时
    4. 视频丢包视频录制:(所有SDK)
      1. rtc拉流
    5. 超低延时直播提供录制:(纯RTC)
      1. rtc拉流
      2. srt拉流
      3. flv拉流
    6. 进房间成功率 + 时延
      1. 自动化跑1h、6h、1天,code = 200的统计
      2. Joinroom 到推流的时间差?首帧数据上报
  • 相关阅读:
    配置文件配置网络
    安装Linux centos 7.3
    java二维字符数组的输入
    前端保存JSON文件到本地
    在Springboot中使用swagger2
    Vue better-scroll使用指南
    解决端口占用问题
    CheckSum(校验和)计算
    区分按字寻址与按字节寻址
    进制转换
  • 原文地址:https://www.cnblogs.com/darlingmz/p/14832841.html
Copyright © 2011-2022 走看看