目前,我专注于如何使用 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。