FixMyVideos

Réparer un fichier H.264 corrompu

H.264 (AVC) reste le codec vidéo le plus déployé au monde. On le trouve dans la plupart des fichiers MP4 et MOV, dans le XAVC S de Sony et dans les dumps bruts que produisent les DVR et les caméras IP. Cette page s'adresse à ceux qui soupçonnent que leur problème se situe au niveau du flux et veulent savoir ce qu'une récupération fait concrètement.

Le flux est généralement sain. Le conteneur, non.

Un flux H.264 est une suite d'unités NAL. Dans un MP4 ou un MOV sain, elles sont stockées avec un préfixe de longueur (la disposition AVCC), et la configuration du décodeur (les jeux de paramètres SPS et PPS) vit dans la boîte avcC à l'intérieur de l'atome moov, pas dans le flux. C'est ce placement qui rend un enregistrement interrompu si destructeur : perdez le moov et vous perdez d'un coup les tables d'échantillons et la configuration du décodeur, alors que des mégaoctets de slices parfaitement valides restent intacts dans mdat. Beaucoup d'encodeurs de caméra répètent aussi les SPS/PPS dans le flux avant chaque image clé — l'un des points d'appui d'une récupération par carving.

Un lecteur à qui l'on tend un mdat sans moov n'essaiera même pas d'analyser la charge utile. Sans tables d'échantillons, il ignore où commence une image : il affiche « moov atom not found » ou une erreur d'ouverture générique, et abandonne.

Le carving de flux brut, et pourquoi « sans référence » compte

L'outil gratuit classique pour cette panne est untrunc, dont la réputation est méritée, mais qui répare par l'exemple. Vous lui donnez le fichier endommagé avec un fichier sain issu de la même caméra et du même mode d'enregistrement, et il plaque la structure du fichier intact sur le fichier cassé. Que cela vous aide dépend entièrement de votre capacité à produire ce second fichier. Notre moteur prend l'autre chemin et reconstruit tout à partir du seul fichier cassé :

  • Détection des frontières d'images. Le carving parcourt la charge utile à la recherche des limites d'unités NAL, sous leur forme Annexe B (codes de démarrage 00 00 00 01) comme sous la forme à préfixe de longueur qu'utilisent MP4/MOV, et classe chaque NAL par type : jeu de paramètres, IDR, slice non-IDR.
  • Paramètres du codec lus dans le flux lui-même. Résolution, profil, niveau et cadence d'images sont lus dans les jeux de paramètres et les slices observés, pas dans un modèle.
  • Tolérance aux dégâts. Les octets invalides entre deux images valides sont ignorés au lieu d'être traités comme fatals — ce qui compte pour les fichiers issus d'une récupération de données au niveau du disque.
  • Timing de composition reconstruit. Un flux H.264 brut transporte les images dans l'ordre de décodage. En présence de B-frames, un remux naïf donne à chaque image pts = dts, et les lecteurs stricts (QuickTime en tête) affichent des saccades, des mouvements de va-et-vient. La reconstruction restaure le timing de présentation : le fichier récupéré se lit dans les lecteurs pointilleux, pas seulement dans ceux basés sur FFmpeg.
  • Audio extrait en parallèle. Les pistes AAC et PCM sont détectées et reconstruites dans le nouveau conteneur, en synchronisation avec la vidéo.

Vérifications gratuites qui valent le coup

  1. ffprobe -v error broken.mp4. « moov atom not found » signifie une perte de conteneur avec des données de flux probablement intactes — le meilleur cas pour le carving ; voir moov atom not found. « Invalid data found when processing input » est plus large ; voir la page de cette erreur.
  2. Si vous avez un flux élémentaire nu (un dump .h264 / .264 de DVR ou de caméra IP) plutôt qu'un MP4 cassé, essayez de l'encapsuler : ffmpeg -f h264 -i dump.h264 -c copy wrapped.mp4. Les dumps de DVR sont en général en Annexe B avec les jeux de paramètres dans le flux ; quand le flux est propre, cette seule commande suffit.
  3. VLC. Il lit certains fichiers structurellement endommagés que QuickTime refuse. Si VLC lit le fichier en entier, vous n'avez peut-être pas besoin de réparation du tout.
  4. untrunc, si vous avez un clip de référence de la même caméra dans le même mode.

FFmpeg mérite une remarque à part. Il est excellent pour remuxer une entrée analysable, mais il n'a aucun mode carving pour le bloc mdat d'un MP4 cassé ; il lui faut un conteneur lisible ou un flux propre et auto-descriptif. C'est exactement le créneau de ce moteur. La comparaison détaillée : FFmpeg et Shutter Encoder face à la récupération.

Ce que la récupération ne fait pas

Pas de réencodage. Les slices sont copiées au bit près dans le conteneur reconstruit : aucune perte de génération. Pas de déchiffrement non plus : les flux chiffrés ou protégés par DRM sont hors de portée de tout outil de réparation, le nôtre compris. Et pas de suppositions facturées comme des résultats : l'aperçu gratuit est décodé depuis votre flux réellement récupéré, vous voyez donc de vraies images avant de décider quoi que ce soit.

Ce que vous faites

  1. Téléchargez le fichier. Un MP4/MOV cassé ou un dump brut, jusqu'à 50 Go.
  2. Un aperçu gratuit de 5 secondes environ une minute plus tard.
  3. Payez à partir de 5 $ s'il montre vos images. Rien de récupéré, rien à payer.

FAQ

Comment savoir si mon fichier est en H.264 ou en H.265 ? ffprobe rapporte codec_name=h264 ou hevc quand le conteneur est lisible. Quand il ne l'est pas, le moteur détecte le codec à partir des données des images elles-mêmes : pas besoin de le savoir avant l'envoi. Si le vôtre s'avère être du HEVC, le processus est le même ; voir récupérer des fichiers HEVC.

Pouvez-vous réparer un dump .h264 brut de DVR ou de caméra IP ? Le moteur travaille au niveau du flux, donc les dumps sans conteneur passent par le même carving. Essayez d'abord l'encapsulation FFmpeg gratuite ci-dessus ; si le flux contient des dégâts sur lesquels FFmpeg bute, envoyez-le et l'aperçu montrera si le carving va plus loin.

Le fichier récupéré sera-t-il réencodé ? Non. Les slices d'origine sont préservées à l'identique. Seul le conteneur autour est neuf.

Un fichier réparé ailleurs se lit avec des saccades, des mouvements de va-et-vient. Pourquoi ? C'est le problème de timing des B-frames décrit plus haut : le fichier a été reconstruit avec les seuls horodatages de décodage. Une reconstruction correcte restaure les horodatages de composition. L'aperçu gratuit permet de vérifier ce point avant de payer qui que ce soit.

Le H.264 dans d'autres conteneurs fonctionne-t-il, comme le MXF ? Les conteneurs MP4, MOV, MXF et insv sont tous pris en charge. Pour tout ce qui est plus exotique, l'aperçu gratuit est le moyen le plus rapide de savoir si votre fichier passe le carving.

Mes images restent-elles privées ? Le fichier est envoyé sur un serveur en France via HTTPS, est automatiquement supprimé après 48 heures, n'est jamais partagé ni utilisé pour entraîner quoi que ce soit.

Articles connexes

Importez votre fichier H.264 →

Aperçu gratuit · Sans engagement

Prêt(e) à récupérer votre vidéo ?

Importez votre fichier – obtenez gratuitement un aperçu de 5 secondes en environ une minute. Payez uniquement si l'aperçu vous semble correct.

Importez votre vidéo →