利用FFmpeg实现JXL与avif格式HDR图片相互转换,建议下载FFmpeg的FULL编译版本。
批处理文件内容如下:
1.avif2jxl.bat
@echo off
for %%a in (*.avif) do a2j-work.bat "%%a" %1
2.a2j-work.bat
ffmpeg -i %1 -c:v libjxl -distance %2 %1.d%2.jxl
命令格式:avif2jxl.bat <质量参数>
<质量参数>:范围-1至??,越小图像质量越高,文件越大。建议0.1-0.5(可以多做几次测试,找到自己合适的数值。)
3.jxl2avif.bat
@echo off
for %%a in (*.jxl) do j2a-work.bat "%%a" %1
4.j2a-work.bat
ffmpeg -i %1 -c:v libaom-av1 -still-picture 1 -crf %2 -pix_fmt yuv420p10le -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range pc %1.crf%2.avif
命令格式:jxl2avif <质量参数>
<质量参数>:越小图像质量越高,文件越大。建议8-32;
而且,越小越慢,越大越快(可以多做几次测试,找到自己合适的数值。)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
更新:使用librav1e编码器生成avif,(号称最快的av1编码器)
(不过,理论上libaom-av1的图像质量最好,但是,确实慢!)
仅需修改j2v-work.bat:
ffmpeg -i %1 -c:v librav1e -qp %2 -tiles 4 -pix_fmt yuv420p10le -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc -color_range pc %1.qp%2.avif
命令格式:jxl2avif.bat <图像质量参数>
<图像质量参数>:-1 至 255,越小越好。建议从16-32开始测试,这是很好的图像质量。如果觉得文件体积过大,可以提高数值。
另外,-tiles 4,可以根据自己的CPU的逻辑核心数来调整。(如果数值过小,CPU占用率跑不满。)
另外,-pix_fmt yuv420p10le,也可以更改为-pix_fmt yuv444p12le,可以实现12bit每通道的YUV444。Chrome浏览器是支持的。尽管Lightroom classic或Lightroom for IOS导出avif时只有10bit选项。