为什么 ffmpeg psnr 过滤器生成的 psnr 和 ssim 值与 x264 tune psnr 不同?

为什么 ffmpeg psnr 过滤器生成的 psnr 和 ssim 值与 x264 tune psnr 不同?

目前,我专注于如何使用 psnr&ssim 指标来评估 libx264 和 hw h264 编码器的视频编码质量。

我发现 libx264 编码器有记录 psnr&ssim 值的选项。

当我使用以下命令时,我可以在编码完成时获得 psnr。

例如:ffmpeg -y -video_size 1920*1080 -pix_fmt yuv420p -r 25 -i ./Tennis_1920x1080_24.yuv -c:v libx264 -preset faster -tune psnr -vb 1000k -g 90 -s 1920*1080 -an libx264_out_1000k.h264 -psnr

[libx264 @ 0x4840c20] PSNR 平均值 Y:32.345 U:39.530 V:39.383 平均值:33.687 全局:33.326 kb/s:943.62

但有时硬件编码器没有编码日志,应该使用第三方工具来计算 psnr 质量。而且我还发现当我使用 ffmpeg psnr 过滤器来计算 psnr 值时,我无法获得与上述结果相同的分数,即使编码帧是对齐的。

ffmpeg -video_size 1920*1080 -pix_fmt yuv420p -r 25 -i ./Tennis_1920x1080_24.yuv -r 25 -i libx264_out_1000k.h264 -lavfi psnr=stats_file=libx264_out_1000k.h264.log -f null - 2>&1 | tee libx264_out_1000k.h264.ffmpeg_psnr.txt

[Parsed_psnr_0 @ 0x33b41e0] PSNR y:32.067442 u:39.500521 v:39.372329 平均:33.447532 最小值:31.125177 最大值:37.774371

我的问题是,如果我们使用 libx264 日志输出中的 psnr 值,并使用 ffmpeg psnr 过滤器来计算 hw 编码结果,不同的测试工具会导致不同的结果。

在进行视频质量测试时,需要对测试工具进行对齐。

那么有人可以给我一些建议吗?我可以在哪里获得可以获得与 libx264 日志输出相同测试结果的 psnr&ssim 工具?

提前致谢。

答案1

x264计算每一帧的psnr,最后计算平均psnr(psnr1 + psnr2 + ... psnrN)/ frame_num,ffmpeg计算每一帧的mse并求所有帧的mse之和,然后计算该序列的整个psnr。

相关内容