比较两个视频文件以找出质量最高的文件


30

假设我将相同的视频材料编码为两个(或更多个)文件。我想对它们运行一些实用程序,以明确指出哪个文件的质量最佳。“大致”表示我想获得一份报告,该报告将不同方面(例如,视频分辨率,视频比特率,音频采样率,音频比特率等)进行逐一比较,然后对所有其中。

这与功能有关,但是要使该实用程序实际可用,它应该是开源的和命令行的。


要开始收集一些相关信息(不是上述条件的真正解决方案),请使用repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh 这是“像专业人士”的东西:压缩.ru / video / quality_measure /…。但这不是开源的,并且比较“原始”和“复制”,而不仅仅是2个无偏文件。
pfalcon 2011年

Answers:


88

我从事视频质量研究,很难为您的问题提供简单的答案。您想要的是一个程序,可为您提供视频的平均意见得分(MOS),即介于1到5之间或0到100之间的数字,它对应于人类感知的质量。

为什么不能简单地比较比特率/分辨率/等。

仅仅比较视频分辨率并不能说明质量。实际上,这可能是完全误导的。700MB大小的1080p电影片段看上去比700MB的720p电影片段差,因为对于前者而言,比特率太低,这会引入各种压缩伪像。

比较不同帧大小下的比特率也是如此,因为不同的编码器实际上可以以较低的比特率提供更好的质量,反之亦然。例如,用XviD制作的720p 700MB rip看上去比用x264制作的700MB rip更糟糕,因为后者效率更高。

您还必须定义最终的“积分”(MOS)如何由各个质量因子组成。这在很大程度上取决于几件事,包括但不限于:

  • 您正在比较的视频的类型(卡通,电影,新闻等)
  • 他们的长度
  • 他们的观众
  • 他们原来的框架大小
  • 编码之前的原始“质量”

我们甚至没有在谈论人类如何看待视频。假设您有一个朋友正在看电影,因为他或她喜欢清晰的细节和高分辨率。与看到只是看电影内容的朋友相比,当他们看到低质量的翻录时,它们将更为重要。只要电影很有趣或很有趣,他们可能就不会太在意影片的质量。

视频质量指标有多种类型!

现在,让我列出我认为最常用于视频质量基本评估的内容。存在几种视频质量度量,可以根据使用哪种信息来确定质量来对其进行分类。原则上并且非常简单地说,您可以区分以下内容:

  • 无参考指标 -他们只有一个视频作为输入并输出质量得分。在您的情况下,您正在寻找无参考指标,因为您通常甚至没有原始视频。这种指标将拍摄一部视频并输出一个质量得分。以下是NR度量将检测(例如模糊)的问题的一些示例

  • 完全参考指标 -它们有两个输入,一个是原始输入视频,另一个是编码视频。例如,您可以拍摄DVD电影,然后从中创建两个片段,然后使用完全参考度量来估计原始DVD电影(即光盘上的MPEG-2视频)与片段之间的质量损失。这将需要很长的时间来计算,但是更加准确。

以上度量标准着眼于视频编码质量,但也存在一些度量标准,其中包含流视频时的初始加载时间和停顿事件之类的问题(例如ITU-T P.1203)。

我可以使用什么软件?

以下列出了一些现成的工具,可以用来测试某些指标(某些仅适用于Windows):

现在有什么指标?

PSNR,PSNR-HVS和PSNR-HVS-M

对于初学者而言,PSNR(峰值信噪比)是一种非常易于使用但评估视频质量的方法,效果不佳。尽管对于大多数应用程序来说,它工作得相对较好,但是它不能很好地估计人对质量的看法。

可以逐帧计算PSNR,然后例如对整个视频序列的PSNR求平均值,以获得最终分数。PSNR越高越好。

PSNR-HVS和PSNR-HVS-M是PSNR的扩展,试图模拟人类的视觉感知,因此它们应该更准确。VQMTMSU可以计算两个视频之间的PSNR,PSNR-HVS和PSNR-HVS-M。

SSIM,MS-SSIM

结构相似度(SSIM)与PSNR一样容易计算,并且可以提供更准确的结果,但仍是逐帧的。您可以在Wikipedia链接下找到一些实现,也可以使用VQMTMSU。这些工具还包括MS-SSIM,它提供了比SSIM更好(即更具代表性)的结果,以及一些其他派生工具。

结果应类似于PSNR。同样,您需要将参考与处理后的视频进行比较才能正常工作,并且两个视频的大小均应相同。

马夫

Netflix的视频多方法评估融合是一套工具,可以基于一些现有指标来计算视频质量,然后通过机器学习方法将其融合为0到100之间的最终分数。Netflix 在这里说明了整个问题

[VMAF]通过组合多个基本质量指标来预测主观质量。基本原理是,每个基本指标在源内容特征,伪像类型和失真程度方面可能都有自己的优点和缺点。通过使用机器学习算法(在我们的示例中是支持向量机(SVM)回归器)将基本指标“融合”到最终指标中,该算法将权重分配给每个基本指标,最终指标可以保留各个指标的所有优势,并提供更准确的最终分数。

您也可以ffmpeg用来计算VMAF分数

VQM

视频质量度量中得到了验证视频质量专家组(VQEG),是一个非常不错的全参考算法。您可以免费下载VQM或使用MSU的实施。

注册并下载时,要使用NTIA通用模型可变帧延迟视频质量模型

其他指标

  • PEVQ是ITU-T J.246的标准全参考指标。它针对的是多媒体信号,而不是高清视频。
  • VQuad-HD是另一种标准化为ITU-T J.341的全参考指标。由于更新,因此更适合高清视频。

两者都是商业解决方案,您找不到要为其下载的软件。

还有一些关于无参考指标的ITU标准,例如ITU-T P.1201ITU-T P.1202,它们与来自IPTV流的比特流中的参数一起使用。ITU-T P.1203建议书可用于自适应流情况。


摘要

如果您只想比较客观的简单可衡量标准,例如:

  • 镜框尺寸
  • 比特率
  • 每秒帧数
  • 视频分辨率

…一个简单的调用ffmpeg -i应在开始时为您提供所需的所有详细信息。也可以看看该-vstats选项。然后,您可以在电子表格中对此进行汇总。请注意,x264例如,在对视频进行编码时,如果需要,例如会将PSNR之类的东西直接记录到文件中,因此以后可以使用这些值。

至于如何权衡这些标准,您可能应该强调比特率-但前提是您知道编解码器相同。您通常可以说,当两个视频都使用x264时,比特率越高越好。甚至更一般而言,当两个视频具有相同的比特率时,您应该选择较低的分辨率,因为升级导致的降级不如比特率低导致的降级那么严重。

除非您对内容和各个编码设置有更多了解,否则无法根据其比特率比较不同的编解码器。帧频也是很主观的,如果它远低于25 Hz,则应计入测量值。

总结一下,如果只有比特率,那就要特别强调比特率。别忘了用你的眼睛:)


首先,作为问题的原始作者,很抱歉以前没有发表评论。该帖子的确很棒,也很受赞赏。不幸的是,我不能接受它作为我最初问题的答案。原因是:我故意在此处而不是在StackOverflow上发布问题,因为我想建议现有的,随时可用的工具。无论是如何编写此类工具的问题,您的答案都将是绝对的赢家。但是抱歉,我无法从头开始编写所有我需要的东西,所以让用户进入我的问题并期待答案(也许不是昨天或今天,也许是将来;-)
pfalcon 2012年

1
很棒,内容丰富的回复。尽管这不是直接的答案,但我还是喜欢看到人们花时间编写这样的信息材料。+1
SuperDuck

1

我不知道有任何工具可以给您最终的建议或评分,但是使用FFmpeg可以输出问题中列出的所有详细信息。

在命令行上,ffmpeg -i将列出视频中的信息。从那里,您可以编写一个脚本来解析信息并根据需要对其进行加权。


谢谢,是的,在决定询问是否存在更好的“魔术”工具之前,我已经做了几个小时;-)
pfalcon 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.