Impossible de lire une vidéo – « moov atom not found »

Aujourd’hui, je me suis retrouvé devant une vidéo (un rush de Les Autres) qu’aucun lecteur de vidéo n’acceptait de lire. Et pour le coup, l’interface graphique de VLC n’affichait aucune erreur. Grâce à quelques quarts d’heure de recherche sur le Web j’ai réussi à trouver une solution. Voyons ça de suite !

corrupted file photo
Photo by Ji Hoon / Ducksauce

L’avant-propos

Le premier problème rencontré a été de faire remonter une erreur significative afin d’avoir la possibilité de faire une recherche efficace.
Pour cela je me suis tourné vers VLC que j’ai lancé via un terminal.
Ce qui donne :

sox@SoX-Desktop:~$ vlc 20171207_151323.mp4
VLC media player 2.2.7 Umbrella (revision 2.2.7-0-g6e32381286)
[0000561a9c193148] core libvlc: Lancement de vlc avec l'interface par défaut. Utilisez « cvlc » pour démarrer VLC sans interface.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f61fcc49640] moov atom not found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f61c4c01f60] moov atom not found
[00007f61c4c01878] avcodec demux error: Could not open /home/sox/20171207_151323.mp4: Unknown error 1094995529
QObject::~QObject: Timers cannot be stopped from another thread

Les recherches

J’ai d’abord commencé par chercher Unknown error 1094995529 mais les retours étaient surtout axés autour du débuggage de VLC lui-même.

Et il me semblait peu probable que l’erreur vienne de là. J’ai donc cherché avec moov atom not found.

Un atom est une unité de données autonomes qui contient des informations sur le fichier vidéo. Le moov atom, également connu sous le nom de movie atom, définit l’échelle de temps, la durée, les caractéristiques d’affichage du film […] .

Maxim Levkov
Traduit de l’anglais avec www.DeepL.com/Translator

Ok donc ça peut expliquer, s’il est manquant, pourquoi les lecteurs n’arrivent pas à lire ma vidéo.

Je me suis dit qu’il était peut-être possible de générer cet atom.

La solution

Finalement, la solution viendra de recover_mp4, un utilitaire en ligne de commandes pour Windows dont l’objectif est justement de récupérer des vidéos corrompues.

La première étape est de faire analyser une vidéo fonctionnelle filmée dans les mêmes conditions que celle corrompue (même résolution et le même bitrate) afin de générer les fichiers d’en-tête :

recover_mp4.exe good_similar.mp4 --analyze

Une fois ceci fait, l’étape 2 consiste à récupérer la vidéo et le son séparément :

recover_mp4.exe 20171207_151323.mp4 recovered.h264 recovered.aac

Vous vous retrouvez donc avec la vidéo dans le fichier H264 et l’audio dans le fichier AAC. Vous pouvez alors utiliser un autre utilitaire pour les réassembler au sein d’un MP4. Pour ma part, j’ai utilisé FFmpeg :

ffmpeg.exe -r 30 -i recovered.h264 -i recovered.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy recovered.mp4

Et voilà 🙂

La conclusion

Bon, à vrai dire ce n’est pas parfait car l’image et le son sont décalés. Et comme je n’ai besoin que de l’image car j’ai une prise de son tiers, je ne vais pas creuser plus.

Ça a donc bien sauvé mon rush !

Si le cas se présente à vous, n’hésitez pas à me dire ce que ça a donné dans les commentaires.


Mes sources :

2 réponses sur “Impossible de lire une vidéo – « moov atom not found »”

  1. Bonjour,

    J’ai essayé ta solution , mais ça n’a pas fonctionné.
    Mais je garde quand même l’utilitaire “recover_mp4” qui est très intéressant en le combinant avec “ffmpeg”…

    Par contre, j’ai changé ma SD micro-card pour une Kingston classe 10 et là, miracle, tout fonctionne !

    Il semblerait donc que le Raspberry PI soit très (trop ?) sensible à la qualité de la SD Card…
    La 1ère carte était une 64 Go classe 10 mais sans aucune marque.
    La 2nde une 32 Go classe 10 de marque Kingston Ultra.

    Avec un peu de chance, ça évitera à d’autres de s’arracher les cheveux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.