我通常处理许多高分辨率 PNG 序列,其中许多是 RGB(24 位)或完全灰度(8 位)。由于序列中的相邻帧非常相似,因此使用支持帧间压缩的编解码器对它们进行无损压缩非常重要。我使用 libx264 压缩 RGB 24 位序列并取得了不错的效果(具体来说ffmpeg -framerate 60 -i out%04d.png -c:v libx264rgb -qp 0 out.mp4
),虽然我可以对灰度图像执行相同的操作,但我想知道在这种情况下是否有更好的编解码器可供使用,因为只有一个通道而不是三个。
对于灰度 png 序列,是否有比 libx264 更好的替代编解码器?如果有,为什么它更好?如果没有,为什么 libx264 在两种情况下都是最好的?
答案1
libx264和libx265都具有无损模式,是帧间的,并且支持灰度像素格式。
库文件
libx264 支持灰色像素格式(参见ffmpeg -h encoder=libx264
),因此对于灰度输入来说,使用它而不是 libx264rgb 可能是更合适的选择:
ffmpeg -framerate 60 -i out%04d.png -c:v libx264 -qp 0 -preset veryslow out.mp4
libx265
值得尝试与 libx264 进行比较,但编码速度会慢得多(特别是如果您使用慢速预设):
ffmpeg -framerate 60 -i out%04d.png -c:v libx265 -x265-params lossless=1 out.mp4
其他的
ffv1、huffyuv、ffvhuff、qtrle 都是无损的,并支持灰度像素格式,但这些都是帧内。