Почему значения psnr & ssim, сгенерированные ffmpeg, отличаются от значений, сгенерированных H264

Я получаю сгенерированный MP4 видео поток из входного потока (MXF или MOV), и при этом я использую -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 ответ

Возможно, потому что временные метки двух видео не совпадают правильно. Вы должны быть в состоянии подтвердить это, предоставляя полный вывод команд, которые вы выполняете, а затем просматривая временную базу двух входных потоков.

[Edit] После некоторой игры, вот способ заставить его игнорировать временные метки и просто делать сравнения кадров 1:1:

ffmpeg -i file1 -i file2 \
    -lavfi '[0:v]setpts=N[out0];[1:v]setpts=N[out1];[out0][out1]psnr' \
    -f null -v info -

Он может несколько жаловаться на неправильные метки времени, но вы можете спокойно игнорировать эти сообщения об ошибках.

Это проблема модуля фильтра ffmpeg psnr. Даже если мы выровняем временную метку и частоту кадров между потоками ref и dis, мы также получим различные значения psnr&ssim. Ниже приведен результат теста на моей стороне, один из которых выводится из журнала libx264, а другой вычисляется фильтром ffmpeg psnr.

Логи libx264:

[libx264 @ 0x4840c20] PSNR Среднее Y:32,345 U:39,530 V:39,383 Avg:33,687 Global:33,326 кбит / с: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 и должны убедиться, что инструменты тестирования совпадают.

Другие вопросы по тегам