Não tenho certeza sobre o comportamento de arquivos de vídeo corrompidos. Vou apenas dar sugestões para possíveis comportamentos.
Esses arquivos não serão reproduzidos? Ou a reprodução falhará em algum lugar no meio do filme?
Se for o primeiro, você pode tentar mplayer -vo null -ao null
em um arquivo, certifique-se de que o mplayer não saia nos primeiros 2-3 segundos, mate o mplayer e vá para o próximo. Deve ser fácil de escrever e não deve demorar mais de uma hora para 1000 filmes.
Se for o último, mais uma vez existem duas possibilidades.
- O mplayer não pode procurar qualquer posição além do ponto de colisão.
- O mplayer pode procurar uma posição além do ponto de colisão e tocar suavemente.
O caso 1 pode ser tratado abrindo um arquivo com echo 'seek 95 1' | mplayer -vo null -ao null -slave
e verificando se o mplayer trava. Este comando apenas abre o arquivo e tenta procurar uma posição de tempo de 95%.
Caso 2 significa que uma falha não pode ser detectada observando-se qualquer ponto do arquivo que não seja o ponto de colisão. Então, a única maneira de fazer isso é decodificar o arquivo inteiro e ver se a decodificação falha em algum momento. Existem maneiras de decodificar arquivos mais rapidamente do que a reprodução em tempo real, mas ainda assim esperaria que esse processo durasse dias, possivelmente meses. Cabe a você decidir se a detecção de 20 a 30 arquivos corrompidos entre alguns milhares realmente vale esse esforço.
Detectando vídeos que não são 720p:
mplayer file.extn -frames 0 -vo null -ao null 2> /dev/null | grep VIDEO | awk '{ print $3 }'
imprime a resolução do vídeo. Você pode usar isso para gerar a lista desejada.