Este título pode ser um pouco enganador, então deixe-me explicar ...
Estou baixando um arquivo de vídeo ... mpeg, avi - sendo um dos formatos populares. Agora, se eu estiver baixando, e o download for interrompido no meio do uhm ... download, por exemplo, o Windows Media Player emitirá algum erro e se recusará a reproduzi-lo (embora o arquivo seja, digamos, 98% completo). Porém, jogadores como o KMPlayer ou o MediaPlayer Classic o reproduzirão até esse ponto (na verdade, eles poderão reproduzi-lo enquanto estiver sendo baixado também).
Então, eu estou interessado, ... sem usar nenhum meio de download (gerenciadores de download e similares) para garantir que o arquivo seja completamente baixado, como verificar se o arquivo de vídeo foi baixado inteiro e se está completo?
fonte
Incomplete MPEG should play with no problems.
@bince, a questão era / é como verificar se há corrupção, não como reproduzir um arquivo incompleto. Mesmo se um formato oferecer suporte à reprodução de arquivos incompletos, ainda será possível verificar se há corrupção se o arquivo não estiver em conformidade com as especificações de formato. Por exemplo, você ainda pode ler um arquivo de texto sem formatação incompleto, mas ainda pode detectar se o arquivo tem problemas, como se ele termina no meio de uma frase ou se há um monte de informações obviamente ausentes no meio.Respostas:
Você pode usar um recurso no
ffmpeg
conversor de vídeo: se você especificá-lo para recodificar o vídeo, ele apenas lerá o arquivo de entrada e reportará os erros que aparecerão. Esse é um processo muito rápido, porque os quadros de vídeo estão sendo lidos, verificados e eliminados silenciosamente.Exemplo de linha de comando: (para Linux)
-v error
significa um certo nível de verbosidade (para mostrar alguns erros que normalmente estão ocultos porque não afetam muito a jogabilidade).Você obterá um log de erro completo com algumas informações genéricas sobre o arquivo ffmpeg, o que provavelmente exigirá sua atenção, através de filtros que podem ser escritos para executar a verificação em lote de arquivos semelhantes.
O FFmpeg também está disponível para Windows aqui . A linha de comando será quase idêntica, com exceção do redirecionamento stderr:
fonte
ffprobe
que vem com o pacoteffmpeg
. Ele não realiza nenhuma conversão, mas simplesmente lê as informações de metadados do arquivo. Portanto, ele detectará erros nos metadados, mas não encontrará problemas no próprio arquivo. Pessoalmente usandoffprobe
para fazer a verificação rápida de carregado antes de processamento adicional-map
), o que acelerará significativamente a operação:ffmpeg -v error -i in.mkv -map 0:1 -f null …
se houver um erro, ele registrará a posição do byte, que você pode usar para truncar o arquivo (um ou dois megabytes antes da segurança) e continuar o download.Eu gostei da ideia de usar
ffmpeg -f null
acima, mas na verdade gostaria de automatizar o processo de usar essa saída. Em particular, o cenário comum que tenho com minha coleção de videoclipes é que tenho poucos clipes com a mesma resolução e gostaria de diferenciar os registros de verificação desses arquivos para remover os que foram quebrados.Infelizmente, o ffmpeg até agora não tem como desativar o modo interativo, o que gera ruído para este caso de uso. Acabei cortando um script de wrapper simples para fazer a filtragem:
Exemplo de saída:
fonte
Para o Windows, você pode 'lote' verificar a integridade dos vídeos na pasta atual e em todas as subpastas com este arquivo bat:
checkvideo.bat
Usar:
checkvideo.bat [filter]
Se você não der um filtro, receberá '* .mp4'.
Amostras:
checkvideo.bat
checkvideo.bat *.avi
Instalação: Faça o download do FFmpeg para Windows a partir daqui: https://ffmpeg.zeranoe.com/builds/ e descompacte-o Altere
C:\ffmpeg\bin\
o arquivo bat do caminho em que você descompactou o ffmpeg Coloquecheckvideo.bat
uma pasta incluída no caminho ou adicione sua pasta a Variável de ambiente do caminhofonte
O problema com a outra resposta usada
ffmpeg
para recodificar nonull
formato é que leva muito tempo. Especialmente, se você deseja verificar vários arquivos em um diretório.Uma maneira rápida seria gerar miniaturas para todos os vídeos e ver onde a geração de miniaturas falha.
Esse método acabou sendo muito mais rápido que outros métodos.
No entanto, há uma CAVEAT. Esse método pode gerar resultados incorretos, porque às vezes as miniaturas podem ser geradas mesmo para arquivos corrompidos. Por exemplo, se o arquivo de vídeo estiver corrompido apenas no final, esse método falhará.
fonte
O MediaInfo é uma ótima ferramenta para obter informações sobre qualquer arquivo de vídeo que você deseja lançar nele. Talvez seja possível destacar as informações que você deseja.
Outra ferramenta é o GSpot, mas não é atualizada desde 2007.
Tente fornecer a cada um um arquivo conhecido como bom e ruim e compare os resultados.
Eu costumava usar o GSpot até que ele deixasse de ser atualizado, depois mudei para o MediaInfo
fonte
mediainfo *
.mediainfo
aparentemente não verifica se está completo. Peguei umwebm
arquivo de vídeo de 33 MB e o coloqueitruncate
na metade.mediainfo
ainda tinha quase o mesmo resultado para ambos, nenhum sinal aparente de corrupção. Depoistruncate
de 1 MB, ainda não havia sinal claro de corrupção na saída. Somente se você analisasse mais profundamente a saída, haveria alguma informação contraditória. Mas essas partes dependem do formato do arquivo de vídeo, portanto você não pode automatizar essa detecção.mediainfo
não lê nada além de metadados. Isso não verificará a validade do seu arquivo de forma alguma.