目标
分析Nvidia nvenc与x264的性能、编码质量差异。主要通过fps来衡量编码速度和效率,PSNR、SSIM、VMAF来衡量编码的画质,通过绘制PSNR-Bitrate、SSIM-Bitrate和VMAF-Bitrate来衡量编码器的压缩比。
并通过以上的实验分析研究给出推荐的nvenc硬件编码参数方案。
数据准备
为了包含普遍性选取以下YUV序列进行测试:
序号 |
名称 |
特点 |
来源 |
1 |
HoneyBee_1920x1080_120fps_420_8bit_YUV |
静态风景 |
Ultra Video Group |
2 |
Beauty_1920x1080_120fps_420_8bit_YUV |
人物人脸 |
Ultra Video Group |
3 |
ReadySteadyGo_1920x1080_120fps_420_8bit_YUV |
动静结合 |
Ultra Video Group |
4 |
Jockey_1920x1080_120fps_420_8bit_YUV |
动态场景 |
Ultra Video Group |
下载地址http://ultravideo.cs.tut.fi/#testsequences
软件平台为 FFmpeg 4.0、cuda-9.0、x264 core 152 r2854 e9a5903
硬件平台 Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
GeForce GTX 1070
数据结果
序列 |
编码器 |
crf/cq |
码率 |
FPS |
SSIM |
PSNR |
VMAF |
HoneyBee_1920x1080_120fps_420_8bit_YUV |
x264 |
23 |
1 142 kb/s |
Avg 11fps |
0.966367 |
42.673071 |
93.229984 |
22 |
1 538 kb/s |
0.966969 |
42.807444 |
93.604552 | |||
21 |
2 112 kb/s |
0.967301 |
42.898571 |
93.872343 | |||
20 |
2 971 kb/s |
0.967376 |
42.951301 |
94.088281 | |||
19 |
4 390 kb/s |
0.967502 |
43.000987 |
94.305109 | |||
18 |
6 659 kb/s |
0.96817 |
43.107878 |
94.498364 | |||
h264_nvenc |
29 |
1 558 kb/s |
Avg 300fps |
0.965211 |
42.414146 |
92.309237 | |
28 |
1 916 kb/s |
0.966475 |
42.662536 |
92.888773 | |||
27 |
2 420 kb/s |
0.967389 |
42.83722 |
93.355142 | |||
26 |
3 394 kb/s |
0.968352 |
43.034606 |
93.836945 | |||
25 |
5 009 kb/s |
0.969049 |
43.169559 |
94.212584 | |||
24 |
6 467 kb/s |
0.969516 |
43.258397 |
94.48651 | |||
23 |
7 655 kb/s |
0.970118 |
43.370822 |
94.678167 | |||
Beauty_1920x1080_120fps_420_8bit_YUV |
x264 |
23 |
4 646 kb/s |
Avg 7.8fps |
0.907387 |
39.506563 |
86.955729 |
22 |
7 969 kb/s |
0.911566 |
39.730311 |
88.441581 | |||
21 |
13.9 Mb/s |
0.917782 |
40.024225 |
89.955126 | |||
20 |
22.2 Mb/s |
0.926521 |
40.469882 |
91.353492 | |||
19 |
33.0 Mb/s |
0.937083 |
41.094158 |
92.663296 | |||
18 |
44.9 Mb/s |
0.946832 |
41.77845 |
93.786576 | |||
h264_nvenc |
29 |
4 416 kb/s |
Avg 285fps |
0.906965 |
39.52038 |
85.61732 | |
28 |
5 045 kb/s |
0.908194 |
39.593546 |
86.135306 | |||
27 |
6 114 kb/s |
0.909663 |
39.685933 |
87.001687 | |||
26 |
7 074 kb/s |
0.910912 |
39.758997 |
87.514632 | |||
25 |
8 307 kb/s |
0.91283 |
39.875242 |
88.109289 | |||
24 |
9 635 kb/s |
0.91463 |
39.975455 |
88.527011 | |||
23 |
11.5 Mb/s |
0.917268 |
40.123596 |
89.212238 | |||
22 |
13.5 Mb/s |
0.92005 |
40.283055 |
90.013753 | |||
20 |
18.3 Mb/s |
0.925588 |
40.589961 |
90.985245 | |||
19 |
21.6 Mb/s |
0.928698 |
40.776674 |
91.452868 | |||
18 |
24.6 Mb/s |
0.931846 |
40.971574 |
91.93481 | |||
17 |
28.9 Mb/s |
0.936008 |
41.231439 |
92.555518 | |||
16 |
32.9 Mb/s |
0.940297 |
41.514844 |
93.234179 | |||
15 |
38.3 Mb/s |
0.943979 |
41.790617 |
93.686612 | |||
14 |
41.9 Mb/s |
0.946649 |
41.99993 |
94.032839 |
序列 |
编码器 |
crf/cq |
码率 |
FPS |
SSIM |
PSNR |
VMAF |
ReadySteadyGo_1920x1080_120fps_420_8bit_YUV |
x264 |
23 |
5 250 kb/s |
Avg 11fps |
0.973024 |
41.35144 |
99.847043 |
22 |
5 935 kb/s |
0.975221 |
41.86688 |
99.887195 | |||
21 |
6 758 kb/s |
0.97722 |
42.376556 |
99.907291 | |||
20 |
7 747 kb/s |
0.978987 |
42.868935 |
99.924166 | |||
19 |
8 930 kb/s |
0.980579 |
43.346492 |
99.934924 | |||
18 |
10.5 Mb/s |
0.981981 |
43.809721 |
99.944512 | |||
h264_nvenc |
28 |
5 510 kb/s |
Avg 365fps |
0.968046 |
40.914532 |
99.755936 | |
27 |
6 267 kb/s |
0.970652 |
41.427228 |
99.838525 | |||
26 |
7 099 kb/s |
0.973114 |
41.938614 |
99.875673 | |||
25 |
7 946 kb/s |
0.975542 |
42.461083 |
99.900183 | |||
24 |
8 928 kb/s |
0.977298 |
42.905 |
99.91347 | |||
23 |
10.2 Mb/s |
0.979208 |
43.427446 |
99.931529 | |||
22 |
11.4 Mb/s |
0.980875 |
43.892208 |
99.941689 | |||
21 |
12.9 Mb/s |
0.982204 |
44.327115 |
99.951173 | |||
20 |
14.6 Mb/s |
0.983424 |
44.737646 |
99.958296 | |||
19 |
16.5 Mb/s |
0.984578 |
45.165276 |
99.964782 | |||
18 |
18.8 Mb/s |
0.985555 |
45.531964 |
99.969128 | |||
16 |
24.8 Mb/s |
0.987419 |
46.300306 |
99.979554 | |||
15 |
28.1 Mb/s |
0.988196 |
46.655861 |
99.982537 | |||
14 |
32.4 Mb/s |
0.989028 |
47.035096 |
99.985571 | |||
Jockey_1920x1080_120fps_420_8bit_YUV.yuv |
x264 |
23 |
3 326 kb/s |
Avg 5.6fps |
0.961379 |
42.598642 |
97.102017 |
22 |
3 939 kb/s |
0.962699 |
42.865526 |
97.62748 | |||
21 |
4 794 kb/s |
0.964007 |
43.124791 |
98.068354 | |||
20 |
6 114 kb/s |
0.965091 |
43.356008 |
98.4783 | |||
19 |
8 411 kb/s |
0.966279 |
43.589986 |
98.911127 | |||
18 |
11.6 Mb/s |
0.968081 |
43.884075 |
99.267466 | |||
h264_nvenc |
29 |
3 629 kb/s |
Avg 289fps |
0.963432 |
43.000248 |
97.036621 | |
28 |
4 127 kb/s |
0.964588 |
43.239886 |
97.39259 | |||
27 |
4 771 kb/s |
0.96554 |
43.449789 |
97.75171 | |||
25 |
6 289 kb/s |
0.967282 |
43.814619 |
98.295378 | |||
23 |
8 642 kb/s |
0.968726 |
44.112918 |
98.763351 | |||
21 |
12.0 Mb/s |
0.970304 |
44.430428 |
99.065527 |
结果总结
画质
crf 23的质量前提下,从PSNR、SSIM指标来看在不同场景的测试序列中,nvenc和x264的表现互有优劣,从VMAF指标来看普遍呈现低码率下nvenc的劣势,在平均5000k的码率下,VMAF越差距1分左右。在crf 18较高的质量要求下,差距明显缩小,在平均10M的码率下,较为静态和人物人脸的场景,nvenc VMAF值反超x264,运动场景中差距仅为0.1分左右,主观较难看出差别。
压缩比
在较低码率下,例如在5000k左右的平均码率,在预设参数下,要求同等VMAF值 nvenc较x264需要多消耗20%的码率。在较高码率下例如10M左右,VMAF极为接近甚至部分反超,因此在高码率下压缩比接近。
性能速度
X264普遍帧率在10fps以下,在运动场景中降低至5fps一下,难以满足快速编码和实时性要求。Nvidia nvenc由于硬件实现编码帧率稳定在300fps左右,性能约为x264软件编码的30倍。
硬件编码参数推荐
暂时不公开