为何选择psnr& ffmpeg生成的ssim值与H264生成的值不同

时间:2015-11-22 17:04:40

标签: ffmpeg video-streaming metrics ssim

我从输入流(mxf或mov)获取生成的mp4视频流,在执行此操作时,我使用-psnr作为H264参数。结果是约。 40或41。

然后我将输入和输出与psnr(或ssim)过滤器进行比较。结果约。 20或21.这是一个很大的区别。有没有人知道这种差异的原因?

注意:ssim结果类似。首先是~0.97,第二个是~0.83

PSNR

ffmpeg -i input.mov -codec:v libx264 -psnr -f mp4 output.mp4
PSNR (~40)

ffmpeg -i output.mp4 -i input.mov -filter_complex psnr -f mp4 /dev/null
PSNR (~20)

SSIM

ffmpeg -i input.mov -codec:v libx264 -ssim -f mp4 output.mp4
SSIM (~0.98...)

ffmpeg -i output.mp4 -i input.mov -filter_complex ssim -f mp4 /dev/null
PSNR (~0.83...)

1 个答案:

答案 0 :(得分:0)

这是ffmpeg psnr过滤器模型的问题。即使我们在ref和dis流之间对齐时间戳和帧速率,我们也将获得不同的psnr&ssim值。 以下是我这边的测试结果,一个来自libx264日志输出,另一个是由ffmpeg psnr过滤器计算的。

libx264日志内容:

  

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

ffmpeg psnr过滤器测试结果:

  

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

有时,我们使用第三部分工具来计算psnr&ssim值,并应确保测试工具相同。