如何查找视频文件中丢失或重复的帧?

如何查找视频文件中丢失或重复的帧?

我有一些视频文件缺少几帧。我可以通过视频播放器播放并逐帧前进来验证,或者通过提取所有帧然后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 个重复的帧。*** 1 dup!输出日志中也包含 74 行。但是没有关于这些帧的信息。我如何获取重复帧的帧号(或时间)?为什么只有 2221 个数据包被解复用,而复用数据包的总数已经正确:2186 + 74 = 2260?

相关内容