У меня есть сценарий, когда я передаю эталонное видео на серверный компьютер и получаю его на клиентском компьютере с точно таким же кодеком, используя FFMpeg через UDP / RTP.
Итак, у меня есть файл reference.avi и файл recording.ts. Теперь, из-за проблем со стороной сети и FFMpeg, отбрасывающих старые кадры, часто в записи .ts с самого начала не хватает точно 12 КАДРОВ. Иногда между кадрами может отсутствовать больше кадров, но это происходит из-за общего сетевого трафика и причины потери пакетов, и я не планирую это учитывать. В любом случае, из-за этих 12 кадров, когда я вычисляю PSNR, он падает до ~ 13, даже если на оставшиеся кадры это может повлиять / не повлиять.
Итак, моя цель - отбросить первые 12 кадров из reference.ts, а затем сравнить. Для этого мне также нужно отрегулировать кадры из recording.ts.
Рассмотрим следующий сценарий:
reference.ts имеет 1500 кадров. Естественно, я собираюсь сократить это 1488. Тогда у нас есть следующие случаи:
- recording.ts имеет 1500 кадров. Это не влияет. Тем не менее я удалю 12 кадров, чтобы соответствовать количеству. Таким образом, кадр 1 будет представлять кадр 13.
- recording.ts имеет 1496 кадров. Это не влияет. Тем не менее, я удалю 12 кадров, хотя и получу счет 1484, предполагая, что кадр 1 будет представлять кадр 13.
- recording.ts имеет 1488 кадров. Это затронуто. Нет необходимости удалять кадры.
- recording.ts имеет 1480 кадров. Это затронуто. Нет необходимости снимать рамки.
Как только это будет сделано, я вычислю PSNR. Итак, мой FFMpeg должен быть в состоянии сделать все это, надеюсь, одной командой на bash.
Лучшей альтернативой было бы для FFMpeg найти, где находится 13-й кадр в recording.ts, а затем сократить его с самого начала. Это было бы более предпочтительным и даже более, если бы не требовалось короткое замыкание, т. Е. Если бы смещение могло быть установлено в линию для команды, и дополнительный вывод видео не генерировался для использования в сравнении PSNR.
Current Я использую следующую команду для расчета PSNR.
ffmpeg -i 'recording.ts' -vf "movie='reference.avi', psnr=stats_file='psnr.txt'" -f rawvideo -y /dev/null
Было бы здорово, если бы кто-то мог помочь мне в этом. Спасибо.