假设我将相同的视频材料编码为两个(或更多个)文件。我想对它们运行一些实用程序,以明确指出哪个文件的质量最佳。“大致”表示我想获得一份报告,该报告将不同方面(例如,视频分辨率,视频比特率,音频采样率,音频比特率等)进行逐一比较,然后对所有其中。
这与功能有关,但是要使该实用程序实际可用,它应该是开源的和命令行的。
假设我将相同的视频材料编码为两个(或更多个)文件。我想对它们运行一些实用程序,以明确指出哪个文件的质量最佳。“大致”表示我想获得一份报告,该报告将不同方面(例如,视频分辨率,视频比特率,音频采样率,音频比特率等)进行逐一比较,然后对所有其中。
这与功能有关,但是要使该实用程序实际可用,它应该是开源的和命令行的。
Answers:
我从事视频质量研究,很难为您的问题提供简单的答案。您想要的是一个程序,可为您提供视频的平均意见得分(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,然后例如对整个视频序列的PSNR求平均值,以获得最终分数。PSNR越高越好。
PSNR-HVS和PSNR-HVS-M是PSNR的扩展,试图模拟人类的视觉感知,因此它们应该更准确。VQMT和MSU可以计算两个视频之间的PSNR,PSNR-HVS和PSNR-HVS-M。
结构相似度(SSIM)与PSNR一样容易计算,并且可以提供更准确的结果,但仍是逐帧的。您可以在Wikipedia链接下找到一些实现,也可以使用VQMT或MSU。这些工具还包括MS-SSIM,它提供了比SSIM更好(即更具代表性)的结果,以及一些其他派生工具。
结果应类似于PSNR。同样,您需要将参考与处理后的视频进行比较才能正常工作,并且两个视频的大小均应相同。
Netflix的视频多方法评估融合是一套工具,可以基于一些现有指标来计算视频质量,然后通过机器学习方法将其融合为0到100之间的最终分数。Netflix 在这里说明了整个问题:
[VMAF]通过组合多个基本质量指标来预测主观质量。基本原理是,每个基本指标在源内容特征,伪像类型和失真程度方面可能都有自己的优点和缺点。通过使用机器学习算法(在我们的示例中是支持向量机(SVM)回归器)将基本指标“融合”到最终指标中,该算法将权重分配给每个基本指标,最终指标可以保留各个指标的所有优势,并提供更准确的最终分数。
该视频质量度量中得到了验证视频质量专家组(VQEG),是一个非常不错的全参考算法。您可以免费下载VQM或使用MSU的实施。
注册并下载时,要使用NTIA通用模型或可变帧延迟的视频质量模型。
两者都是商业解决方案,您找不到要为其下载的软件。
还有一些关于无参考指标的ITU标准,例如ITU-T P.1201和ITU-T P.1202,它们与来自IPTV流的比特流中的参数一起使用。ITU-T P.1203建议书可用于自适应流情况。
如果您只想比较客观的简单可衡量标准,例如:
…一个简单的调用ffmpeg -i
应在开始时为您提供所需的所有详细信息。也可以看看该-vstats
选项。然后,您可以在电子表格中对此进行汇总。请注意,x264
例如,在对视频进行编码时,如果需要,例如会将PSNR之类的东西直接记录到文件中,因此以后可以使用这些值。
至于如何权衡这些标准,您可能应该强调比特率-但前提是您知道编解码器相同。您通常可以说,当两个视频都使用x264时,比特率越高越好。甚至更一般而言,当两个视频具有相同的比特率时,您应该选择较低的分辨率,因为升级导致的降级不如比特率低导致的降级那么严重。
除非您对内容和各个编码设置有更多了解,否则无法根据其比特率比较不同的编解码器。帧频也是很主观的,如果它远低于25 Hz,则应计入测量值。
总结一下,如果只有比特率,那就要特别强调比特率。别忘了用你的眼睛:)
我不知道有任何工具可以给您最终的建议或评分,但是使用FFmpeg可以输出问题中列出的所有详细信息。
在命令行上,ffmpeg -i将列出视频中的信息。从那里,您可以编写一个脚本来解析信息并根据需要对其进行加权。