8位每通道RGB图像序列的最佳无损视频编码方案咨询
8位每通道RGB图像序列的最佳无损视频编码方案咨询
咱做3D动画的太懂这种需求了——动辄几天甚至几周渲染出的序列帧,后续还要在AE里做大量像素级操作,半点儿画质损失都不能有,归档必须是真正的无损,近似无损根本没法用。
你测试的这几个编码里,huffyuv、ffvhuff、utvideo都是老牌的帧内无损编码,它们的优势是编码解码速度快,但压缩比普遍不如利用帧间冗余的libx264rgb和libx265;ffv1虽然也是帧内编码,但开了preset slow后压缩比会有所提升,但还是比不过帧间预测的这两位选手。
针对你核心问的“有没有比libx265和libx264rgb更好的新方案”,目前来看这俩确实是当前无损视频压缩的第一梯队,尤其是针对8位RGB内容的场景,但有几个补充点可以试试:
- libx265的优化小技巧:你当前的命令已经启用了无损模式,但可以加上
pix_fmt=rgb24参数强制按RGB原生色彩空间处理,避免不必要的色彩转换,可能会在压缩效率上有微小提升,修改后的命令是:ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libx265 -x265-params lossless=1:pix_fmt=rgb24 "libx265_lossless/{name}" - AV1无损编码尝试:近几年推出的AV1编码(用libaom-av1)也支持无损模式,理论上压缩比比x265还要略好一点,但代价是编码速度会慢很多——可能是x265的好几倍,适合你归档时不着急速度的场景,命令如下:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libaom-av1 -lossless 1 "libaom_lossless/{name}" - 单帧压缩备选:如果偶尔需要单独提取单帧修改,也可以考虑用专门的PNG无损压缩工具(比如optipng、pngcrush)批量处理序列帧,不过这种方式只利用单帧内的冗余,整体压缩比肯定不如视频编码的帧间方案,适合对单帧可访问性有要求的场景。
你之前用到的所有测试命令我整理如下,方便参考:
- HuffYUV无损编码:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v huffyuv -lossless 1 "huffyuv_lossless/{name}" - FFVHUFF无损编码:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v ffvhuff -context 1 "ffvhuff_lossless/{name}" - UT Video无损编码:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v utvideo "utvideo_lossless/{name}" - FFV1无损编码(慢预设):
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v ffv1 -preset slow -qp 0 "ffv1_lossless/{name}" - libx265无损编码:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libx265 -x265-params lossless=1 "libx265_lossless/{name}" - libx264rgb无损编码:
ffmpeg -ss 0 -i "{unc}" -t {tt} -y -c:v libx264rgb -preset slow -crf 0 "libx264rgb_lossless/{name}"
总结一下:libx264rgb和libx265依然是当前无损视频压缩的顶尖选择——如果看重兼容性和编码速度,libx264rgb更合适;如果追求极致压缩比,且能接受慢编码速度,AV1的libaom-av1无损模式是值得尝试的新选项。
备注:内容来源于stack exchange,提问作者EllipticalInitial




