视频编码器评测系统:VideoCodecRank
来源:互联网 发布:厨师机 知乎 编辑:程序博客网 时间:2024/05/16 15:19
视频编码器领域一直有个比较复杂的问题:mpeg2、divx、xvid、mpeg4、vp8、vp9、x264、openh264、x265等等这一系列编码器到底哪个好?而对于同一种视频编码器,又包括了各种各样的参数配置,这些配置对视频编码器的影响又是怎样的?为了研究这个问题,我和师弟们在课余时间开发了一个软件系统,专门用于评价视频编码器的性能。
本文记录自己做的视频编码器性能评价的系统VideoCodecRank。本系统可以通过调整几种不同的维度的参数取值——视频内容、分辨率、编码器预设、码率来对视频编码器的性能进行评价和对比。对于每一个编码器,本系统可以遍历上述几种参数进行编码,并且记录编码视频图像质量和编码速度。通过本系统,可以全方位的对比视频编码器在各种条件下性能的优劣。在此还要感谢二位师弟的参与。目前在大家的合作下该系统基本功能刚开发完成,下一步打算继续测试和完善。
目前的状态
目前本系统计算了下列编码器:
x264-faster
x264-medium
x264-ultrafast
x264-superfast
x264-veryfast
x264-fast
x264-slow
x264-slower
x264-veryslow
x265-faster
x265-medium
x265-ultrafast
x265-superfast
x265-veryfast
x265-fast
x265-slow
x265-slower
x265-veryslow
f265-quality10
f265-quality20
DivX265-aqo2
DivX265-aqo3
DivX265-aqo4
VP8-good-0
VP8-good-1
VP8-good-2
VP8-good-3
VP8-good-4
VP8-good-5
VP8-realtime
DivX265-aqo1
openh264-rc0
openh264-rc1
mpeg4
mpeg1
mpeg2
xvid
h263p
theora
VC1-adv0
VC1-adv1
VC1-adv2
VC1-adv3
VC1-adv4
VC1-adv5
VP9-good-0
VP9-good-1
VP9-good-2
VP9-good-3
VP9-good-4
VP9-good-5
VP9-realtime
Intel-h264-speed
Intel-h264-quality
Intel-h264-balanced
Intel-mpeg2-speed
Intel-mpeg2-quality
Intel-mpeg2-balanced
使用了下列几种内容的测试视频:
src01
src02
src04
src05
src06
src08
src11
src12
src14
ducks
park
ped
riverbed
station2
sunflower
tractor
每种内容的测试视频被缩放成了如下分辨率:
640x360
848x480
1280x720
1920x1080 (raw)
每个测试视频设定了如下的BPP(可换算为码率):
0.025
0.05
0.075
0.1
0.15
0.2
统计了如下视频图像质量指标:
PSNR
SSIM
系统涉及到的参数
本章主要介绍本视频编码器性能评价系统涉及到的参数。这些参数可以分为输入参数和评价参数。输入参数用于模拟不同的编码环境。而评价参数则用于在编码完成后统计编码性能。输入参数
本节介绍该系统的输入参数。这些参数的变动通常会明显的影响视频编码器的性能。这些参数包括:视频内容,分辨率,编码器预设,码率。视频内容
在相同视频质量的前提下,画面内容复杂、运动剧烈,要求的码率较高;画面内容简单、景物静止,要求的码率较低。本系统中我们选择ITU- BT.1788标准中提出的时间复杂度(TI)和空间复杂度(SI)来分别衡量视频的复杂程度。时间信息(TI)
TI反映了一个序列画面随着时间的变化而变化的程度。画面内容运动程度剧烈的序列通常会有较高的TI值。它的计算方法是求序列的每一帧与前一帧图像的帧差,然后对帧差图像计算标准差。选这些标准差中的最大值为TI。它的计算公式如下所示:
空间信息(SI)
SI反映了一个序列画面的空间复杂程度。内容细节越多的序列通常会有较高的SI值。它的计算方法是对每一帧视频进行Sobel滤波,然后对滤波后图像计算标准差。选这些标准差中的最大值为SI。它的计算公式如下所示:
分辨率
分辨率指的是视频的尺寸。例如常见的分辨率有3840x2160 (4K), 1920x1080 (HD), 1280x720 (720P), 640x360 (360P)等。编码器和编码器预设
不同编码器的编码效果相差很大。此外,同一编码器的预设(preset)对输出的图像质量有较大的影响。本系统将同一编码器的不同的预设也看作为不同的“编码器”。预设指的是预先定义好的一套编码器参数。编码器的预设一般是在速度和图像质量上寻求一个平衡点:速度快的预设一般情况下是以牺牲视频质量为代价的;视频质量好的预设一般情况下编码速度比较慢。例如x264编码器中按照编码速度从快到慢包含了10个预设:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo。码率
码率是影响视频质量最主要的参数之一。其它条件形同的情况下,码率越大,视频质量越好。例如一个640x360的1Mbps的的视频的质量肯定好于一个640x360的500kbps的视频。但是不同分辨率的视频码率差别很大。例如我们很难断定一个1280x720的1Mbps的视频的质量是否高于一个640x360的500kbps的视频。为了去掉分辨率这个影响因子,我们在本文的系统中引入了一个新的变量——BPP(每像素比特数)。BPP的计算公式如下:BPP的意义是视频中一个像素点的数据量。例如我们假设帧率为25fps,上文中1280x720的1Mbps的视频的BPP取值为0.043,640x360的500kbps的视频的BPP取值为0.087。下表列出了BPP,码率和常见分辨率之间的对应关系。
对应码率(kbps)
每像素比特数
(bits/pixel)
640x360
848x480
1280x720
1920x1080
0.025
144
254
576
1296
0.05
288
508
1152
2592
0.075
432
763
1728
3888
0.1
576
1017
2304
5184
0.15
864
1526
3456
7776
0.2
1152
2035
4608
10368
评价参数
评价参数用于在编码完成后统计编码的质量情况。评价参数可以分为两类:质量评价参数和速度评价参数。质量评价参数
编码质量评价主要通过全参考视频质量评价算法实现。全参考视频质量评价算法通过比较编码前原始视频与编解码后受损视频获得视频质量的评价结果。最常见的全参考视频质量评价模型为PSNR和SSIM。PSNR
PSNR(峰值信噪比)是使用最为广泛的视频质量评价方法。它的计算公式为:
其中L为图像灰度值范围,对于8bit位深的图像来说L=2^8-1=255;M*N图像块的MSE(均方误差)计算公式为:
PSNR取值通常在20-40之间,取值越大代表图像质量越好。尽管PSNR计算简单,但是由于没有考虑到人类视觉感知特性,所以其评价结果与主观感受往往相差较大。
SSIM
SSIM(结构相似度)是zhou wang等人提出的一种常见的视频质量评价方法。该方法考虑了人类视觉感知特性,综合考虑了亮度、对比度以及结构的影响。它的计算公式如下所示。
其中l(x,y)为亮度比较函数,c(x,y)为对比度比较函数,s(x,y) 为结构比较函数。这三个函数的具体计算方法可以参考相关文献。
SSIM取值在0-1之间,取值越大代表图像质量越好。SSIM相对于PSNR来说更加符合人眼的主观感受,因此也是一种使用很广泛的视频质量评价方法。
速度评价参数
编码速度评价主要通过统计编码和解码的耗时(以毫秒为单位)来实现。
系统运行原理
本系统会根据输入的配置信息,遍历上文介绍的几种输入参数值,组合成不同的命令进行编码和评价工作。系统开始运行后,会按照顺序执行下面几步工作:(1)对于每个输入的视频测试序列,对它的尺寸进行缩放,生成一系列不同分辨率的视频序列。
(2)对于每种分辨率的原始视频序列,选择不同的编码器准备编码。
(3)对于每种编码器,设置不同的码率进行编码,生成码流文件。随后解码生成的码流文件,得到受损的视频序列。
(4)对于每个受损视频序列,使用不同的视频质量评价方法进行质量评价,得到质量分数。
上述逻辑下图所示。从图中可以看出本系统遍历参数的顺序如下:
视频内容-->分辨率-->编码器-->码率-->客观质量评价方法
当系统完成了一次客观质量评价算的计算之后,就会生成一条保存了当前实验参数的记录,并将该记录存储到数据库中。网站说明
VideoCodecRank网站的结构如下图所示。整个网站除了首页之外包含了“结果集”、“编码器”、“视频序列”、“系统配置”、“关于”几个页面。这些页面之间的关系如下图所示。首页
首页中包含了一张编码器的综合比较图表。其中蓝色横条代表了编码图像质量,而黄色横条代表了编码时间。可以拖动图表上方的滑动条调整下面几种参数选择不同的数据对编码器的性能进行排序。速度质量权重:目前只支持时间/质量权重设置为1或0。质量权重为1则按照编码器输出视频质量进行排序,时间权重为1则按照编码器消耗时间进行排序。首页的内容如下所示。
分辨率:该选项可以选择输入视频的尺寸。
码率:该选项可以选择输入视频的码率。注意码率是按照BPP(Bit Per Pixel,每像素比特数)为单位的。
内容复杂度:该选项可以选择输入测试视频序列。注意输入的视频内容是按照时间复杂度TI或空间复杂度SI(这两个指标均取自于ITU BT.1788标准)进行排序的,以方便选择。
结果集页面
结果集页面中包含了系统中所有客观视频质量评价的结果。每一条实验记录包含了如下信息:编码器
视频序列
分辨率
每像素比特数
编码时间
解码时间
视频质量评价算法
客观质量
主观质量
结果集页面的内容如下图所示。可以通过在下拉框中调整“编码器”,“视频序列”,“分辨率”,“每像素比特数”,“客观质量评价算法”几个参数来筛选符合特定条件的结果。
编码器页面
编码器页面中包含了系统中所有参与评价的编码器(注:对于包含多种预设的编码器,每种预设都算作一种编码器)。其中每一条记录包含了如下信息:编码器名称编码器页面的内容如下图所示。单击编码器的名称可以进入编码器详细信息页面。
所属标准
厂商
版本
编码器详细信息页面
编码器详细信息页面包含了3个部分:编码器简介、编码器详细质量和编码器时间-质量权衡图。编码器简介部分内容如下所示。可以看出该列表列出了编码器的基本信息。
视频序列页面
视频序列页面中列表显示了系统中所有参与测试的原始视频序列信息。其中每一条记录包含如下信息:视频序列名称视频序列页面的内容如下图所示。单击视频序列的名称可以进入视频序列详细信息页面。
原始分辨率
像素采样格式
帧率
帧数
视频序列详细信息页面
视频序列详细信息页面包含了3项内容:视频序列预览、视频序列详细特性以及视频序列时间/空间复杂度对比图。视频序列预览部分内容如下所示。可以通过该功能预览测试视频的内容。
视频序列时间/空间复杂度对比图如下所示。图中每个点代表一个视频序列,图表横坐标为SI,纵坐标为TI。由此可知位于图表上方的视频序列运动比较剧烈,而位于图表右边的视频序列内容纹理比较复杂。最为简单的视频序列位于图表的右上角,最为简单的视频序列位于图表的左下角。
系统配置页面
系统配置页面的内容如下图所示。该页面中列出了系统配置的参数信息。例如显示了输入视频会被拉伸为哪几种分辨率,编码时候会选择哪些BPP,客观质量评价算法有哪些等等。
(完)
http://t.zhulong.com/u11167729
http://t.zhulong.com/u11169491
http://t.zhulong.com/u11169685
http://t.zhulong.com/u11169690
http://t.zhulong.com/u11169695
http://www.tianya.cn/128300159/profile
http://www.tianya.cn/128296328/profile
http://www.dianyuan.com/people/706701
http://www.tianya.cn/128332802/profile
http://www.tianya.cn/128341678/profile
http://www.tianya.cn/128341802/profile
http://www.dianyuan.com/people/706701
http://www.dianyuan.com/people/706828
http://www.dianyuan.com/people/706861
https://club.1688.com/article/62280805.html
https://club.1688.com/article/62280819.html
https://club.1688.com/article/62280845.html
https://club.1688.com/article/62280851.html
https://club.1688.com/article/62280879.html
https://club.1688.com/article/62280872.html
https://club.1688.com/article/62280870.html
https://club.1688.com/article/62293691.html
https://club.1688.com/article/62293811.html
https://club.1688.com/article/62293819.html
https://club.1688.com/article/62294005.html
https://club.1688.com/article/62294069.html
https://club.1688.com/article/62294155.html
https://club.1688.com/article/62294186.html
https://club.1688.com/article/62294382.html
https://club.1688.com/article/62294403.html
https://club.1688.com/article/62294417.html
https://club.1688.com/article/62294448.html
https://club.1688.com/article/62294460.html
https://club.1688.com/article/62294472.html
https://club.1688.com/article/62328724.html
https://club.1688.com/article/62328797.html
http://www.ximalaya.com/81063150/
- 视频编码器评测系统:VideoCodecRank
- 视频编码器评测系统:VideoCodecRank
- H.264三大开源编码器之评测报告
- H.264实时编码器客观参数评测
- H.264开源编码器评测
- H.264三大开源编码器之评测报告
- 什么是视频分配器 编码器
- 视频编码器-Rainbow
- 视频编码器:编译libx264
- Android视频编码器
- H.264 软/硬编码器 画质量化分析评测
- H.264 软/硬编码器 画质量化分析评测
- H.264 软/硬编码器 画质量化分析评测
- ZEALER 科技评测视频展示
- 系统localtime性能评测
- 代码执行时间评测系统
- 推荐系统评测指标
- lemon评测系统
- Effective Java读书笔记十五(Java Tips.Day.15)
- java 中访问控制符
- c 等差数列应用arranging coins 多种实现方法
- Material Designer设计(中)
- javabean
- 视频编码器评测系统:VideoCodecRank
- MaterialDesign设计(下)
- fcn——free connect your private network from anywhere
- js中的函数
- 【C++学习笔记】函数
- Hibernate用getCurrentSession()增删改查
- snprintf参数类型不严格匹配导致的天大的坑“(null)”------这次不说core dump问题了
- 2017-05-12 华东师范大学网络邀请赛
- Codeforces 782B 二分搜索