今天有(mo)空(yu)闲搞了个小实验,想看看 2K 以下的分辨率,包括 FHD(1920x1080)和 HD(1280x720)甚至更低分辨率时,HEVC 的画质和压缩率相比 AVC 到底有多少提升。
之前给家里影音资源大量二压的过程就隐约觉得,在 FHD 、HD 甚至更低分辨率的场景下,HEVC 似乎很得不偿失。
本来还想着通过实验找到个比较均衡的 CRF 参数供以后使用,但是结果让我大跌眼镜,很想放弃 HEVC 。
本文的 hevc 专指 ffmpeg 自带 x265 编码器,avc 专指 ffmpeg 自带 x264 编码器,qsv 专指 ffmpeg 自带 h264_qsv 编码器
[先放结论] [ 1 ] 如果画面细节是可以舍弃的,那么采用较高的 crf,25 以上甚至 28 以上,此时的 hevc 编码虽然很费时间,但是体积可以缩得很小,而且虽然细节丢失后的画面涂抹感严重,但是轮廓色块却能比较好得保留下来,相比之下此时的 avc 早已变成马赛克(实际上 avc 在默认的 crf=23 时轮廓线条已经开始轻微碎片化)。 [ 2 ] avc 的缺点随着分辨率的升高而被放大,到 4K 甚至更高的分辨率时,avc 将被 hevc 碾压,这同时符合 hevc 的设计目标和现实中的应用场景。 [ 3 ] 在 FHD 全高清乃至更低分辨率的条件下,hevc 在码率利用率上的优势不太明显,尤其在使用低 crf 压制时,hevc 相比于 avc 最多只能减小 30%左右的码率,而且相比于 avc 依然有轻微的涂抹感,会丢失一些细微细节,然而这却是耗费了几倍的编码时间换来的。
实验素材是个高码率 MMD,因为是 CG 动画,代表性还是不够广泛,但权且作为这类视频的典型例子。
软件全都是 FFmpeg,版本 4.0.2 。
codec res crf ratio
+-------+-------+-------+----
hevc x 16 .343
avc x 16 .447
hevc x 19 .226
avc x 19 .322
hevc x 22 .147
avc x 22 .222
hevc x 25 .099
avc x 25 .154
hevc x 28 .068
avc x 28 .109
hevc fhd 16 .257
qsv fhd 16 .319
avc fhd 16 .358
hevc fhd 19 .165
qsv fhd 19 .219
avc fhd 19 .236
hevc fhd 22 .109
avc fhd 22 .159
hevc fhd 25 .075
avc fhd 25 .112
hevc hd 16 .123
qsv hd 16 .171
avc hd 16 .176
hevc hd 19 .083
qsv hd 19 .12
avc hd 19 .117
hevc hd 22 .057
avc hd 22 .08
hevc hd 25 .04
avc hd 25 .057
codec:编码器,qsv 专指 h264_qsv,我的 CPU 旧,不支持 hevc_qsv
res:输出分辨率,x 指原分辨率,fhd 指缩小到内切 1920x1080,hd 指缩小到内切 1280x720
crf:就是 crf 参数,顺便一提实验中除了 crf 和缩放没有其他参数
ratio:压缩比,输出文件相比源文件的体积比值,小数点前面的 0 省略了
有经验的人知道,avc 的 crf=23 和 hevc 的 crf=28 有点接近
但这并不代表 avc 和 hevc 输出相同画质对应的 crf 总是相差 5
crf 越小,这俩的输出画质越接近
实际上 23 以下的相同 crf 时,这俩的输出画质就已经不能一眼看出来了,得暂停、靠近、放大、截图……
但真实情况还要更复杂,因为 hevc 针对超高清优化,像素块涂抹感很严重
对于全高清以下的分辨率,hevc 细节其实丢得很多
但在 crf=16 时,hevc 、avc 、qsv 三者的画质非常接近
硬要说的话,avc 依然最佳,但与其他两个的差距可以忽略
但此时,这三者体积也很接近,hevc 顶多也就节约 20%-30%的码率
虽然对视频平台服务商来讲可以剩下很多成本
但在本地存储时,节约的空间不明显,而压制的时间却是成倍增加
所以说 hevc 得不偿失撒(对个人、家用)
如果增大 crf,19 也还行,22 算是个分水岭
再往上,细节的丢失可以被轻易地感知,但很多时候用户就是不需要保留这些细节
比如说,我之前一直把家里的电影统一缩小到内切 1280x720,用 crf=25 压制成 hevc
“看电影看的是故事不是像素点”
一些值得收藏的视频则会用 crf=28,当然也是 hevc
“以后重看时大概看个意思就行了”
这么看来,hevc 虽然非常耗时,但能用低码率牺牲细节保留轮廓,也是个很不错的应用面
那如果要保留细节、输出高画质、又要二压减小体积呢?
我以前一直采用 crf<22 的 hevc,但通过这次实验,我觉得该换思路
既然此时 hevc 画质没有优势,体积没有优势,耗时劣势拉满,那为什么不用 avc 呢
既既然此时 qsv 无论是画质、体积都和 avc 相差无几甚至偶有反超,而速度却数倍于 avc,那为什么不用 qsv 呢
全文完
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.