Registered just to thanks, re opening an old thread.

I downloaded the program from this post:

https://forum.videohelp.com/threads/352952-Batch-validate-large-number-of-video-files?p...28#post2218328

Originally Posted by Selur View Post
btw. instead of using ffmpeg I would probably go for mplayer and use a call like:
Code:
mplayer -tsprobe 10000000 -benchmark -forcedsubsonly  -mc 0 -nosound -nosub -noautosub -vo null "Path to input"
and as a error detection I would classify all output files that include: 'error', 'failed', 'nor found', 'broken' or 'failure' or start with '[' as error message.
Further filtering can be done afterwards.

Why I would use mplayer instead of ffmpeg:
a. using '-benchmark' it will try to decode as fast as possible; which might help a bit with the speed
b. using mplayers 'Binary Codec Package' mplayer can decode a lot more content than ffmpeg.

i ran into the same problem you did. the output is not consistant enough and it takes too long for each file
about the speed: each file needs to be decoded frame-by-frame this takes time,... no real way around it other than
a. making sure the program that decodes the input tries to decode as fast as possible
b. providing more decoding power (cpu) and faster file access speed (hdd)
c. if file access/transfer time and cpu power are both not a bottleneck, run multiple analysis in parallel

-> shouldn't be hard to implement

Cu Selur

Ps.: btw. is the thread starter even reading this?
PPs.: attached a win64 binary gui for this (read the README.txt)
Downloaded MPlayer from http://mplayerwin.sourceforge.net/, the 64 bits binary, and extracted just MPlayer.exe to the same folder as the tool mentioned.

I had to rename the file from mplayer.exe to mplayer2.exe.

Opened the program from Selur, and draged the files to it. Changed the "only analyse" dialog to 100%, clicked the "Analyse" button.

Image
[Attachment 40463 - Click to enlarge]


The log obtained was:

Code:
Going to analyze 100% of each source,..
startAnalyse (1) for FILE.mkv
mplayer2.exe -noframedrop -lavdopts threads=4 -speed 100 -v "FILE.mkv" -demuxer mkv -nocorrect-pts -nosound -vo null -ao null -nosub -vf pullup
mplayer finished (1) after 00:11:1.198hrs
startAnalyse (2) for FILE.mkv
mplayer2.exe -noframedrop -lavdopts threads=4 -speed 100 -v "FILE.mkv" -demuxer mkv -nocorrect-pts -nosound -vo null -ao null -nosub -vf lb,pullup
mplayer finished (2) after 00:00:01.309hrs

  light affinity (0+) 0->1 : 0 of 0 (0%)
  light affinity (1+) 1->2 : 0 of 0 (0%)
  light affinity (2+) 2->3 : 0 of 0 (0%)
  first light affinity (0+) 0->1 : 2638 of 0 (0%)
  first light affinity (1+) 1->2 : 6 of 0 (0%)
  first light affinity (2+) 2->3 : 74280 of 0 (0%)
  first light affinity count: 76924 (0%)
  second light affinity count: 0 (0%)

  strong affinity (0+) 0->1 : 0 of 0 (0%)
  strong affinity (1+) 1->2 : 0 of 0 (0%)
  strong affinity (2+) 2->3 : 0 of 0 (0%)
  first strong affinity (0+) 0->1 : 71653 of 0 (0%)
  first strong affinity (1+) 1->2 : 3 of 0 (0%)
  first strong affinity (2+) 2->3 : 0 of 0 (0%)
  first strong affinity count: 71656 (0%)
  second strong affinity count: 0 (0%)

  telecine 3:2 percentage (first): 7(0)
  telecine 3:2 percentage (second): 0(0)
  Full light first: 0
  Full light second: 0
  Full strong first: 0
  Full strong second: 0

  m_firstAffinity.count(): 84594
  secondAffinity.count(): 0

  m_firstBreaks.count(): 84594
  secondBreaks.count(): 0

 => interlaced (3)
Could not find an error.

A file with error produced this output:

Code:
Going to analyze 100% of each source,..
startAnalyse (1) for File.mkv
mplayer2.exe -noframedrop -lavdopts threads=4 -speed 100 -v "File.mkv" -demuxer mkv -nocorrect-pts -nosound -vo null -ao null -nosub -vf pullup
mplayer finished (1) after 00:00:01.196hrs
startAnalyse (2) for File.mkv
mplayer2.exe -noframedrop -lavdopts threads=4 -speed 100 -v "File.mkv" -demuxer mkv -nocorrect-pts -nosound -vo null -ao null -nosub -vf lb,pullup
mplayer finished (2) after 00:00:01.143hrs

  light affinity (0+) 0->1 : 0 of 0 (0%)
  light affinity (1+) 1->2 : 0 of 0 (0%)
  light affinity (2+) 2->3 : 0 of 0 (0%)
  first light affinity (0+) 0->1 : 1 of 0 (0%)
  first light affinity (1+) 1->2 : 0 of 0 (0%)
  first light affinity (2+) 2->3 : 151 of 0 (0%)
  first light affinity count: 152 (0%)
  second light affinity count: 0 (0%)

  strong affinity (0+) 0->1 : 0 of 0 (0%)
  strong affinity (1+) 1->2 : 0 of 0 (0%)
  strong affinity (2+) 2->3 : 0 of 0 (0%)
  first strong affinity (0+) 0->1 : 149 of 0 (0%)
  first strong affinity (1+) 1->2 : 0 of 0 (0%)
  first strong affinity (2+) 2->3 : 0 of 0 (0%)
  first strong affinity count: 149 (0%)
  second strong affinity count: 0 (0%)

  telecine 3:2 percentage (first): 0(0)
  telecine 3:2 percentage (second): 0(0)
  Full light first: 0
  Full light second: 0
  Full strong first: 0
  Full strong second: 0

  m_firstAffinity.count(): 199
  secondAffinity.count(): 0

  m_firstBreaks.count(): 199
  secondBreaks.count(): 0

 => interlaced (3)
Which meant it had an error at frame 199.

This is the best way I found to analyse a bunch of files, checking the video content, and not the headers.

Thanks for Selur for the tool!

I do believe somebody can find a better version of Mplayer to do this, or explain how to use the "-benchmark" option (if it is now already in use) on Mplalyer.

But again, this is the best way I found to check for corrupted files on a directory.