如何查找視訊檔案中遺失/重複的幀?

如何查找視訊檔案中遺失/重複的幀?

我有一些視頻文件,其中缺少一些幀。我可以透過在視訊播放器中播放並逐幀前進來驗證這一點,或者通過提取所有幀然後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 行。但是沒有關於這些框架的資訊。如何取得重複幀的幀號(或時間)?當多路復用資料包的總數已經正確:2186 + 74 = 2260 時,為什麼只有 2221 個資料包被多路分解?

相關內容