如何比较视频编码器的性能

在做编码器性能比较时需要考虑以下指标

1、 视频质量-码率 二者要结合起来考虑,可以称之为quality-size比。
视频质量无疑是最重要的考量指标,视频质量的比较可以采用主观评价方法,也可以采用客观评价方法。
2、 编码器的性能特征
例如编解码(压缩\解压缩)速度、支持的型(profile)、支持的选项、支持的分辨率、支持的码率控制策略等等。
3、 通用的软件特性
例如制造商、支持的操作系统、系统版本号、发布时间、商业or免费or开源、支持的框架(DirectShow等等)、价格等等。


下面一条一条详细说明:

如何进行视频质量的比较?

首先需要注意的是:

1、 编码器所能实现的视频质量在很大程度上依赖于它所使用的压缩格式(标准),例如MPEG-1编码器所能达到的quality-size比很难跟采用了H.264标准的编码器相比,而不同的编码器也可能使用了同样的压缩格式(标准),但对同一规范的不同实现也可能导致最后quality-size比有很大不同。
2、 同一编码器在同一视频序列的不同段落(帧)之间也可能会产生较大的质量差别。首先,这要归因于编码器的码率控制策略。码率控制策略分为可变比特率(VBR)和恒定比特率(CBR)两种,前者可以为所有帧提供近乎恒定的质量,后者可以提供近乎恒定的码率,而需要注意的是,两种策略都是以单帧为作用对象的。此外,这还要归因于有些编码器会区别对待不同类型的帧(例如关键帧和非关键帧),它们会考虑这些帧对总体质量的重要性以及可以被压缩的程度。第三点,现今的编码器都有预处理功能,这也会影响质量。

如前所述,视频质量的比较可以采用主观评价方法也可以采用客观评价方法。

视频质量主观评价方法主要有DSIS、DSCQS、SAMVIQ,可以在ITU BT.500和ITU BT.1788标准中找到更多详细内容。这里也提供一个我自己制作的视频主客观质量评价资料汇总。
视频质量客观评价方法依据是否有参考序列而分为三类:全参考(FR)、无参考(NR)和部分参考(RR)。

在全参考方法中比较常用的有:

PSNR:只有在考量同类型编码器+同视频内容时,才能保证这种方法的准确性
SSIM:比PSNR要好得多,计算复杂度也更高
这几种客观评价方法的实现可以参见IQA的开源项目,但是他们的库不知有什么问题,无法直接使用,这里提供一个我改过之后的可以用的版本。
在无参考方法中主要检测的指标有:块效应和模糊效应

然而,在客观质量评价中有类似表现的编码器到了主观评价中却可能出现差别很大的表现,这要归因于以下几点
1、 前置滤波
常见的前置滤波有:去噪(denoising)、去闪烁(deflicking)、去抖动(deshaking)等。去噪和去闪烁在提升视觉感受的同时一般不影响PSNR值,优秀的去噪滤波甚至可以在中高码率下提高PSNR值,而去抖动则会在提升视觉感受的同时严重降低PSNR值。
2、 码率控制策略
同样的PSNR时,VBR策略编码的视频主观质量一般高于CBR策略编码的视频

一般将不同码率下视频的不同质量评价结果画在同一张图里,称之为率失真曲线,其实就是rate-distortion图

如何进行编码器性能特征比较
速度比较——使用编码时的帧率作为比较指标,以ffmpeg为例,你可以在命令行界面中看到编码时的帧率,图中的fps即为所需

如何比较视频编码器的性能_第1张图片

同时还要考虑以下几点有关于速度性能的内容:
1、 单指令多数据流技术的支持(SIMD,MMX,SSE,SSE2)等
2、 多线程以及超线程技术的支持,对于一些未针对超线程技术做优化的编码器,开启超线程功能反而为降低编码速度
3、 RAM速度
4、 处理器的高速缓存大小
5、 GPU加速
6、 解码速度(或编码速度)的均匀性,忽快忽慢的速度会在播放时造成缓冲

要注意的是,在不同的机器上编码器的表现会有不同,因为各编码器可能专门针对某些硬件特征做了优化

支持的型(profile)
这一点主要是针对H.264这样的现代编码器来说的,所谓不同的型即对应不同级别的应用有不同的一套配置,一个特定的产品一般也只支持一个编码标准的一部分型。
要得到准确的编码器性能比较结果,就要考虑到编码器的各种型的变化。

码率控制策略
如前所述,码率控制策略分为两大类:VBR和CBR。VBR力求最大化视频质量、最小化视频码率。而在可用带宽有限的应用环境下,要达到实时无缓冲的应用,就必须要使用CBR,例如视频会议。

有关通用的软件特性示例以及一些编码器性能比较结果示例参见http://en.wikipedia.org/wiki/Comparison_of_video_codecs






你可能感兴趣的:(视频,编码,ffmpeg)