Corrigez les fichiers et les flux incorrects avec ffmpeg afin que VLC et les autres joueurs ne se bloquent pas

17

Il m'est arrivé plusieurs fois que je puisse me retrouver dans des fichiers vidéo corrompus:

  • vidéo téléchargée à partir de sources officielles mais avec torrent et pour une raison quelconque, toutes les pièces ne sont pas en .mkv, .ts ou .mp4
  • enregistre au format .ts où à un certain point les données sont manquantes
  • vidéos copiées d'un vieux disque dur avec des secteurs endommagés

Lorsque je joue ces vidéos avec VLC ou d'autres joueurs, ils jouent jusqu'à un certain point, puis se quittent instantanément. Parfois, je peux essayer de sauter la mauvaise partie, mais je pourrais rencontrer un autre secteur défectueux et recommencer instantanément.

La question est:

Puis-je résoudre ces problèmes (je suppose que le flux et les images clés sont liés) avec ffmpeg et peut-être en mode -c afin de ne pas tout recompresser?

Ce que je veux réaliser, c'est une vidéo pleine longueur où les parties manquantes sont sautées, je préfère un problème plutôt que de faire planter mes vidéos.

user3450548
la source

Réponses:

26

Si des parties du fichier résident sur des secteurs physiquement défectueux, ou pour une raison quelconque, le système d'exploitation ne peut pas servir l'intégralité du fichier à FFmpeg, alors naturellement FFmpeg ne peut rien faire à ce sujet. Vous devriez obtenir un utilitaire qui peut ignorer ces portions et écrire les parties récupérables dans un nouveau fichier, comme ddrescue .

Maintenant, si le protocole de fichier n'est pas la cause d'erreurs, vous pouvez essayer

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv
Gyan
la source
1
Cela fonctionne, mais échoue sans -c copy. Étonnant que cela ne fonctionne pas pendant le recodage.
intuition
Même avec ça, je reçois toujours Invalid data found when processing input- et ffmpeg abandonne.
Mikhail T.
Belle solution ... si l'atome moov (sur un fichier MP4) est toujours présent quelque part. Et si ce n'est même pas là?
Gwyneth Llewelyn
Cela fonctionne de mon côté avec une bonté surprenante :)
shirish
5

Dans la recherche d'une meilleure réponse, une voie possible pourrait être:

ffmpeg -i video.mkv -c copy video_fixed.mkv

Cependant, je suis presque sûr qu'il existe des options supplémentaires qui peuvent rendre le résultat encore meilleur.

user3450548
la source
1
Fonctionne pour moi chaque fois que j'ai un problème avec les métadonnées, les horodatages ou les informations sur les conteneurs. Et c'est très rapide, généralement plus rapide que la vitesse de lecture 400x.
user24601
Cette commande m'a sauvé les fesses, pour être honnête.
neverMind9