点击上方蓝字关注我们
1.前言
准备视频源:
video | bitrate | resolution |
---|---|---|
source.mp4 | 2746KB | 1280x720 |
target1.mp4 | 1024KB | 1280x720 |
target2.mp4 | 2048KB | 1280x720 |
target3.mp4 | 2537KB | 640x480 |
主要目的:
对比不同编码器编译出的视频质量效果; 对比不同参数下的视频质量效果[本次采用不同视频];
本文主要介绍主观方法和数据分析方法
2. 视频质量主观效果对比
工具:VCmpTool_15
基于ffplay 开发:
Github:ronnielige/ffmpeg-4.2.3-VCmpTool: A video compare tool based on ffmpeg-4.2.3 (github.com)
下载链接:
https://pan.baidu.com/s/1EVFCblAFmrFhbklbmGfI-w?pwd=yg66 提取码: yg66
VCmpTool.exe D:\21.Controller\vmaf\test\source.mp4 D:\21.Controller\vmaf\test\target2.mp4
相关控制
播放时的控制键:
操作 | 功能 |
---|---|
q, ESC | 退出 |
f | 全屏 |
p, space | 暂停 |
s | 播放下一帧 |
F1 | 左边的画面播放到下一帧 |
F2 | 右边的画面播放到下一帧 |
左键 | 回退10秒 |
右键 | 快进10秒 |
上键 | 快进60秒 |
下键 | 回退60秒 |
鼠标左键单击 | 移动分割线到鼠标位置 |
按住鼠标左键 | 移动分割线 |
2. 视频质量客观数据对比
评价视频/图片质量的3个数据:PSNR,SSIM,VMAF
3.1 PSNR(峰值信噪比,Peak Signal to Noise Ratio )
一个纯客观的评价图片质量的参数,但是峰值信噪比高不代表人眼看到的视频/图片质量好。计算公式略。
PSNR高于40dB说明图像质量极好(即非常接近原始图像),
30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),
20—30dB说明图像质量差;
最后,PSNR低于20dB图像不可接受
命令
ffmpeg -i video1 -i video2 -lavfi psnr="stats_file=psnr.log" -f null -
# 运行测试
ffmpeg -i source.mp4 -i target1.mp4 -lavfi psnr="stats_file=psnr.log" -f null -
# ffmpeg -i 支持视频流输入,比如
ffmpge -i rtsp://192.168.10.xx/stream1 xxxxx
结果:
3.2 SSIM(结构相似性,Structural SIMilarity index)
这个方法考虑到了人眼的主观感受,运算时包含了均值比较,对比度比较和结构比较,计算公式略。
SSIM是一个0到1之间的数,越大表示输出图像和无失真图像的差距越小,即图像质量越好。当两幅图像一模一样时,SSIM=1;
命令
ffmpeg -i video1 -i video2 -lavfi ssim="stats_file=ssim.log" -f null -
# 运行测试
fmpeg -i source.mp4 -i target1.mp4 -lavfi ssim="stats_file=ssim.log" -f null -
结果:
3.3 VMAF(视频多方法评估融合,Video Multimethod Assessment Fusion)
Netflix与南加州大学、南特大学IPI/LS2N 实验室以及德克萨斯大学奥斯汀分校图像和视频工程实验室 (LIVE) 合作开发的客观的全参考视频质量指标。它根据参考和失真的视频序列预测主观视频质量。该指标可用于评估不同视频编解码器、编码器、编码设置或传输变体的质量。
通过查阅资料和官方说明,VMAF的分数评判大致分为以下内容:
使用由绝对类别评分(ACR)方法收集的分数进行训练,该分数使用 1080p 显示屏,观看距离为3H。观看者对视频质量的评分为“差”,“差”,“一般”,“好”和“优秀”,并且粗略地讲,“差”被映射为VMAF级别20,“优秀”为100。
按照官方的说明,VMAF得分70可以测试者理解为:普通观众在 1080p 和 3H 条件下的“好”和“一般”之间的投票结果。
要考虑的另一个因素是,观看者可以给出的最佳和最差选票是通过整套视频中质量最高和最低的视频进行校准的。在默认模型 v0.6.1 的情况下,最佳视频和最差视频分别对应于在低QP(量化参数)1080p下编码的视频和在高QP 的 240p下编码的视频。
方法一(命令):
以下采用windows 10 环境下操作:
步骤1:克隆项目
https://github.com/Netflix/vmaf.git
git clone https://github.com/Netflix/vmaf.git
步骤2 Building vmaf on Windows
We are going to build vmaf in Windows. These steps are in accordance with the corresponding github action for building on Windows and have been tested successfully using a Windows10 machine. They work with either cmd or PowerShell.
Note: This guide is just to build libvmaf on Windows and not involves the python part of project as it is the same across all platforms (settings up virtual environment, ...).
具体安装方法参考:
https://github.com/Netflix/vmaf/blob/master/resource/doc/windows.md
步骤3:测试
命令测试:
ffmpeg -i d:\21.Controller\vmaf\test\source.mp4 -i d:\21.Controller\vmaf\test\target1.mp4 -lavfi libvmaf="model_path=vmaf_v0.6.1.json:log_path=VMAF.txt" -report -f null -
结果:
循环测试其他视频与原视频比较;
方法二(EXE 推荐):
下载最新版本:Releases · fifonik/FFMetrics (github.com)
2024年2月23日12:02:08 最新版本下载:FFMetrics.1.4.9b.zip
添加相关文件,直接运行看到得分:
PSNR
越大越好
SSIM
(0~1) 越接近1越好
VMAF
(0~100) 数值越大越好
3.3 结论
从主观角度查看视频和数据评估对比视频质量,发现target2.mp4更加优越
video | bitrate | resolution | PSNR | SSIM | VMAF |
---|---|---|---|---|---|
source.mp4 | 2746KB | 1280x720 | |||
target1.mp4 | 1024KB | 1280x720 | 31.6911 | 0.8392 | 57.5525 |
target2.mp4 | 2048KB | 1280x720 | 34.1246 | 0.8999 | 73.8175 |
target3.mp4 | 2537KB | 640x480 | 29.6634 | 0.7754 | 33.6483 |
本次实验中,编码的效果整体不是很优秀,有兴趣可以自行测试,VMAF在90以上视频质量效果才算比较ok.