@
mortal 用 hevc_nvenc 压,将 4K 源压 1080p, 参数设为
-vf scale=-1:1080:flags=lanczos+accurate_rnd+full_chroma_inp+full_chroma_int [-pix_fmt yuv444p16le -c:v hevc_nvenc -preset slow -rc vbr -cq 0 -qmin 2 -qmax 23 -spatial-aq 1 -aq-strength 15 -bufsize 20M -rc-lookahead 64 -refs 16 -bf 3 -b_ref_mode middle] -c:a libfdk_aac -ac 2 -b:a 320k
得到的结果基本上是原 4K 文件的 70% 到 80% 左右(原 4K 文件是 35Mbps 的恒定码率录像);
其质量还不如用 libx265 压,其他参数相同,仅替换上方中括号中的部分为
… -pix_fmt yuv444p10le -c:v libx265 -preset veryslow -crf 27 …
的画面质量,而后者的文件大小在原 4K 文件的 25% 左右。
其实我还是有做一些其他的压码试验的,hevc_nvenc 将 4K 压往 1080p, 得将 -qmax 调到 20 左右画面才勉强看不出画质减退(尽管仔细比较还是能看到的),此时得到的 1080p 的文件大小已经是原 4K 文件的 120% 到 130% 左右了,也即,用 GPU 压码,如果不是将画幅缩小到 ¼ 的话,那压出来的文件至少得是原始大小的 5 倍,才能勉强维持一个可看的画质。
CPU 压码,除了慢之外,没有任何毛病。上面说的这些是自己的录像,没有经过后期处理,因此要保证质量的话得到的结果比较大。如果是网上那些 REMUX 的蓝光片源,用 libx265 去压,即使 -crf 设到 20, 1080p 压 1080p, 也能将 20+GB 的文件缩小到 2 到 3 GB 左右,压缩效率可以说是非常高了,而且画质真心不错,我一般压蓝光片源都是将 -crf 设到 20 就足矣,这样得到的结果在文件大小和画质上正好都合意。
另,目前 libsvtav1 压出来的质量很差,根本无法跟 libx265 相比。我使用最新的 libsvtav1 试着压制了一下,使用 -preset 3 -crf 33, 结果用着比 -preset veryslow -crf 20 的 libx265 还要久的编码时间,得到了一个大概近似于 -crf 25 的 libx265 压制出来的文件大小,结果停帧对比发现画质比 -crf 26 的 libx265 压出来的还要差,画面上可以看出明显的画质差异,甚至一些细节被完全抹除,这还是在开启了 -svtav1-params tune=0 去 sharpening 的前提下。
总结来说,如果追求最佳的画质和文件大小,还是得用 libx265, preset 上 veryslow 或者至少 slow, 然后 crf 设在 18 到 22 之间慢慢压、慢慢等。