我负责渲染 3D 动画,其中许多动画需要几天甚至几周的时间才能渲染完成,我需要保存输出文件的无损存档。渲染引擎的输出格式是每通道 8 位(24 位)PNG 序列,然后在 After Effects 中对其进行大量修改以创建最终合成。
我想找到一种方法来压缩这些 PNG 序列而不损失任何质量。由于 After Effects 中对原始源 PNG 文件进行了许多像素级操作,因此我必须找到一种方法来真正无损地保存动画。对于这种用例来说,近乎无损是不可接受的。
我已经测试了 ffmpeg 中的几种编解码器,到目前为止,libx265 和 libx264rgb 似乎势均力敌。下表显示了我使用 ffmpeg 中的各种编解码器(每列)对我制作的各种动画(每行)进行无损压缩时获得的文件大小(以 GB 为单位):
我认为这两种编解码器都已经存在一段时间了,所以我想知道最近是否有其他东西可以使文件大小进一步减小?或者 libx265 和 libx264rgb 是真正的无损压缩的巅峰?
如果相关的话,这些是我用来压缩每个编解码器的命令:
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v huffyuv -lossless 1 "huffyuv_lossless/{name}"'
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v ffvhuff -context 1 "ffvhuff_lossless/{name}"'
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v utvideo "utvideo_lossless/{name}"'
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v ffv1 -preset slow -qp 0 "ffv1_lossless/{name}"'
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libx265 -x265-params lossless=1 "libx265_lossless/{name}"'
cmd = f'ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libx264rgb -preset slow -crf 0 "libx264rgb_lossless/{name}"