Как установить смещение кадра для источника и эталонного видео для расчета с помощью FFmpeg командной строки? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть сценарий, когда я передаю эталонное видео на серверный компьютер и получаю его на клиентском компьютере с точно таким же кодеком, используя FFMpeg через UDP / RTP.

Итак, у меня есть файл reference.avi и файл recording.ts. Теперь, из-за проблем со стороной сети и FFMpeg, отбрасывающих старые кадры, часто в записи .ts с самого начала не хватает точно 12 КАДРОВ. Иногда между кадрами может отсутствовать больше кадров, но это происходит из-за общего сетевого трафика и причины потери пакетов, и я не планирую это учитывать. В любом случае, из-за этих 12 кадров, когда я вычисляю PSNR, он падает до ~ 13, даже если на оставшиеся кадры это может повлиять / не повлиять.

Итак, моя цель - отбросить первые 12 кадров из reference.ts, а затем сравнить. Для этого мне также нужно отрегулировать кадры из recording.ts.

Рассмотрим следующий сценарий:

reference.ts имеет 1500 кадров. Естественно, я собираюсь сократить это 1488. Тогда у нас есть следующие случаи:

  1. recording.ts имеет 1500 кадров. Это не влияет. Тем не менее я удалю 12 кадров, чтобы соответствовать количеству. Таким образом, кадр 1 будет представлять кадр 13.
  2. recording.ts имеет 1496 кадров. Это не влияет. Тем не менее, я удалю 12 кадров, хотя и получу счет 1484, предполагая, что кадр 1 будет представлять кадр 13.
  3. recording.ts имеет 1488 кадров. Это затронуто. Нет необходимости удалять кадры.
  4. 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

Было бы здорово, если бы кто-то мог помочь мне в этом. Спасибо.

...