- 1:简介
- 2:实验
- 3:实验结果
- 3.1:总体效果
- 3.2:逐帧对比
- 4:实验结论
简介
nvenc是调用英伟达显卡硬件编码单元的编码器,由于编码是基于显卡的硬件编码电路,速度非常快,在时延敏感的场合应用较多。
x265是支持hevc标准的开源编码器,基于CPU对视频编码,是最常用的hevc编码器。
实验
实验素材:一段同时有暗场、亮场、高速运动场景和慢速运动场景的视频,长度为3000帧,格式为yuv420p8。
将yuv420p8直接转换为yuv420p10,送至编码器编码10bit视频。
使用以下编码参数编码:
- nvenc(turing) hevc
- preset-quality cq-28 with b-frame
- x265 3.1
- preset-slow crf-22
- preset-medium crf-22
- preset-fast crf-22
- preset-faster crf-22
- preset-veryfast crf-22
- preset-superfast crf-22
- preset-ultrafast crf-22
最后使用VMAF(VMAF is a perceptual video quality assessment algorithm developed by Netflix.)对编码的视频质量进行评价。
实验结果
总体效果
编码参数 | mean vmaf score | 速率(fps) | 码率(kbps) |
---|---|---|---|
nvenc preset-quality cq-28 | 87.376865 | 147.10 | 2568.17 |
x265 preset-slow crf-22 | 88.234039 | 4.59 | 2561.49 |
x265 preset-medium crf-22 | 87.387566 | 14.79 | 2311.89 |
x265 preset-fast crf-22 | 86.808085 | 19.04 | 2595.39 |
x265 preset-faster crf-22 | 86.722103 | 22.89 | 2581.73 |
x265 preset-veryfast crf-22 | 86.714830 | 23.51 | 2586.65 |
x265 preset-superfast crf-22 | 86.074712 | 35.22 | 2235.74 |
x265 preset-ultrafast crf-22 | 83.778749 | 47.29 | 2129.34 |
nvenc preset-quality的表现画质和码率的综合表现略逊于x265 preset-medium,但是速度是其10倍。
nvenc preset-quality已经全方位优于x265 preset-fast以及速度更快的x265预设。
逐帧对比
该视频前半部分主要是低速运动场景,后半部分主要是高速运动场景。
所有图中青色线均为nvenc的数据。
nvenc vs x265-slow
x265-slow画质基本高于nvenc。
nvenc vs x265-medium
nvenc与x265-medium的vmaf均值基本一致,nvenc与x265-medium各有优势的场景。
nvenc vs x265-fast
nvenc均值高于x265-fast,但是x265-fast也有画质高于nvenc的场景存在。
nvenc vs x265-faster
nvenc vs x265-veryfast
nvenc vs x265-superfast
nvenc在逐帧对比中,在每种场景下画质均优于x265-superfast。
实验结论
nvenc preset-quality总体表现优于x265 preset-fast及更高速预设,在时延敏感场合是不二之选。
nvenc preset-quality在平均画质上与x265 preset-medium基本一致,码率较preset-medium多出10%,但是速度是它的10倍。
如果需要详细定义编码器参数、有足够的时间和计算资源,使用x265 slow或者更慢预设级别的参数,可以在同码率下得到比nvenc更高的画质。不过在一般压制过程中,编码器前端都需要接上frameserver进行处理,很多图像处理操作都必须由CPU完成,此时frameserver只能和编码器抢资源用,在该应用场景下速度一般会更慢。
当然,对于对画质和体积都有苛刻的要求的用户来说,x265编码器的参数肯定是精心优化过的,使用预设进行对比只是希望使用更加标准化的参数进行对比。