Ce titre pourrait être un peu trompeur, alors laissez-moi vous expliquer ...
Je télécharge un fichier vidéo ... MPEG, AVI - étant l'un des formats populaires. Maintenant, si je le télécharge et que le téléchargement se termine au milieu du téléchargement, par exemple, Windows Media Player émettra une erreur et refusera de le lire (bien que le fichier soit, disons, Terminé à 98%). Mais des joueurs comme KMPlayer ou MediaPlayer Classic le joueront jusqu’à ce moment-là (en fait, ils peuvent également le jouer pendant le téléchargement).
Donc, je suis intéressé, ... sans utiliser aucun moyen de téléchargement (gestionnaires de téléchargement et autres) pour sécuriser le fichier est complètement téléchargé, comment peut-on vérifier si le fichier vidéo est téléchargé en entier, et s'il est complet?
la source
Incomplete MPEG should play with no problems.
@bobince, la question était / est de savoir comment vérifier la corruption, pas comment lire un fichier incomplet. Même si un format prend en charge la lecture de fichiers incomplets, il devrait toujours être possible de vérifier si le fichier n'est pas conforme aux spécifications de format. Par exemple, vous pouvez toujours lire un fichier de texte brut incomplet, mais vous pouvez également détecter si le fichier a des problèmes, par exemple s'il se termine au milieu d'une phrase ou s'il y a un bloc d'informations manifestement manquantes au milieu.Réponses:
Vous pouvez utiliser une fonctionnalité dans
ffmpeg
Video Converter: si vous indiquez de ne pas recoder la vidéo, elle lira simplement le fichier d'entrée et signalera les erreurs éventuelles. Ce processus est très rapide car les images vidéo sont en cours de lecture, de vérification et de suppression silencieuse.Exemple de ligne de commande: (pour Linux)
-v error
signifie un certain niveau de verbosité (pour montrer certaines erreurs qui sont normalement cachées car elles n'affectent pas beaucoup la jouabilité).Vous obtiendrez un journal des erreurs complet contenant des informations génériques sur le fichier que ffmpeg affichera. Cela nécessitera probablement votre attention. Des filtres peuvent être écrits pour permettre la vérification par lots de fichiers similaires.
FFmpeg est également disponible pour Windows ici . La ligne de commande sera presque identique à l'exception de stderr redirect:
la source
ffprobe
fournie avecffmpeg
. Il ne fait aucune conversion mais lit simplement les informations de métadonnées à partir d'un fichier. Par conséquent, il détectera les erreurs dans les métadonnées mais ne trouvera aucun problème dans le fichier lui-même. Personnellement utilisantffprobe
pour faire une vérification rapide de téléchargé avant de poursuivre le traitement-map
), ce qui accélérera considérablement le fonctionnement: enffmpeg -v error -i in.mkv -map 0:1 -f null …
cas d'erreur, il enregistrera la position de l'octet, que vous pouvez utiliser pour tronquer le fichier (un mégaoctet ou deux avant pour plus de sécurité), puis reprendre le téléchargement.J'ai aimé l'idée d'utiliser
ffmpeg -f null
ci-dessus, mais j'aimerais en fait automatiser le processus d'utilisation de cette sortie. En particulier, le scénario que j’ai couramment avec ma collection de vidéos musicales est que j’ai peu de clips qui ont la même résolution, et je voudrais comparer les journaux de vérification de ces fichiers pour supprimer ceux qui sont le plus endommagés.Malheureusement, jusqu'à présent, ffmpeg n'a pas la possibilité de désactiver son mode interactif, qui génère du bruit pour ce cas d'utilisation. J'ai fini par pirater un script de wrapper simple pour faire du filtrage:
Exemple de sortie:
la source
Pour Windows, vous pouvez vérifier par lots l'intégrité des vidéos sur le dossier actuel et tous les sous-dossiers contenant ce fichier bat:
checkvideo.bat
Utilisation:
checkvideo.bat [filter]
Si vous ne donnez pas un filtre, vous obtiendrez '* .mp4'.
Échantillons:
checkvideo.bat
checkvideo.bat *.avi
Configuration: Téléchargez FFmpeg pour Windows à partir d’ici: https://ffmpeg.zeranoe.com/builds/ et décompressez-les. Modifiez
C:\ffmpeg\bin\
dans le fichier chauve-souris le chemin où vous avez décompressé ffmpeg Placezcheckvideo.bat
un dossier inclus dans le chemin ou ajoutez son dossier à Variable d'environnement de cheminla source
Le problème avec l’autre solution
ffmpeg
consistant à recoder aunull
format, c’est que cela prend vraiment beaucoup de temps. Surtout si vous voulez vérifier plusieurs fichiers dans un répertoire.Un moyen rapide serait de générer des vignettes pour toutes les vidéos et de voir où la génération de vignettes échoue.
Cette méthode s'est avérée beaucoup plus rapide que les autres méthodes.
Cependant, il y a un CAVEAT. Cette méthode peut donner des résultats erronés, car parfois, une vignette peut être générée même pour des fichiers corrompus. Par exemple, si le fichier vidéo est corrompu uniquement à la fin, cette méthode échouera.
la source
MediaInfo est un excellent outil pour obtenir des informations sur tous les fichiers vidéo que vous souhaitez jeter. Cela peut être en mesure de mettre en évidence les informations que vous souhaitez.
GSpot est un autre outil, mais il n’a pas été mis à jour depuis 2007.
Essayez de donner à chacun un mauvais fichier connu et comparez les résultats.
J'avais l'habitude d'utiliser GSpot jusqu'à ce qu'il cesse d'être mis à jour, puis je suis passé à MediaInfo
la source
mediainfo *
.mediainfo
apparemment ne vérifie pas la complétude. J'ai pris unwebm
fichier vidéo de 33 Mo et je l'aitruncate
coupé à la moitié.mediainfo
avait toujours presque le même résultat pour les deux, aucun signe apparent de corruption. Après avoirtruncate
atteint 1 Mo, il n'y avait toujours pas de signe clair de corruption dans la sortie. Seulement si vous avez regardé plus en profondeur la sortie, il y avait des informations contradictoires. Mais ces parties dépendent du format du fichier vidéo, vous ne pouvez donc pas automatiser cette détection.mediainfo
ne lit rien sauf des métadonnées. Cela ne vérifiera en aucun cas la validité de votre fichier.