Как найти пропущенные/дублированные кадры в видеофайле?

Как найти пропущенные/дублированные кадры в видеофайле?

У меня есть несколько видеофайлов, в которых отсутствуют несколько кадров. Я могу это проверить, воспроизведя их в видеоплеере и перейдя по кадрам, или извлекая все кадры, а затем ffpegпроверив выходные изображения

ffmpeg -loglevel trace -i myfile.mp4 myframes/frame%5d.png

В конце извлечения я вижу что-то вроде

frame= 2260 fps= 24 q=-0.0 Lsize=N/A time=00:01:15.33 bitrate=N/A dup=74 drop=0 speed=0.812x
video:2714746kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (myfile.mp4):
  Input stream #0:0 (video): 2221 packets read (57126959 bytes); 2186 frames decoded;
  Total: 2221 packets (57126959 bytes) demuxed
Output file #0 (myframes/frame%5d.png):
  Output stream #0:0 (video): 2260 frames encoded; 2260 packets muxed (2779899741 bytes);
  Total: 2260 packets (2779899741 bytes) muxed
2186 frames successfully decoded, 0 decoding errors

Мы видим, dup=74что означает, что есть 74 дублированных кадра. В выходном журнале также есть 74 строки, содержащие *** 1 dup!. Однако информации об этих кадрах нет. Как мне получить номер кадра (или время) дублированных кадров? И почему только 2221 пакет демультиплексируется, когда общее количество мультиплексированных пакетов уже верно: 2186 + 74 = 2260?

Связанный контент