Hier, j'étais en train de filmer une scène avec mon téléphone mais soudainement l'application s'est effondrée et lorsque j'essaie d'ouvrir le fichier m4v généré, il indique que celle-ci est corrompue.
J'ai téléchargé les fichiers vidéo (environ 36 Mo) sur mon PC et j'essaie de l'ouvrir et de le réparer. Pouvez-vous me suggérer un moyen de le faire?
FFMPEG info
Comme suggéré dans les commentaires, j'essaie de vérifier ce que FFMPEG me dit à propos de ce fichier avec cette commande
ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt
Ici c'est le résultat:
ffmpeg version N-40126-ga4b58fd Copyright (c) 2000-2012 the FFmpeg developers
built on Apr 26 2012 03:29:50 with gcc 4.6.3
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 47.100 / 51. 47.100
libavcodec 54. 15.100 / 54. 15.100
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 72.100 / 2. 72.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 11.100 / 0. 11.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 003fc940] moov atom not found
VID_20120425_144739.m4v: Invalid data found when processing input
Les deux dernières lignes sont affichées en rouge.
Réponses:
Il est possible de réparer le fichier MP4 ou M4V endommagé à l’aide de Untrunc .
Pour cette méthode, vous avez besoin d'un autre fichier vidéo du même périphérique qui n'est pas endommagé.
Comment installer
untrunc
Pour la compilation, vous avez besoin d’une installation Linux (idéalement Ubuntu) et d’une capacité de base à utiliser une ligne de commande. Vous pouvez également ignorer cette partie et exécuter
untrunc
via Docker (voir la réponse ci-dessous ), si vous en avez un.Voici ce qu'il faut faire:
Installez certaines bibliothèques pré-requises avec cette commande:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Obtenez le code source de Untrunc à partir du référentiel GitHub (choisissez une méthode):
wget https://github.com/ponchio/untrunc/archive/master.zip && unzip master.zip && cd untrunc-master
git clone https://github.com/ponchio/untrunc.git && cd untrunc
Compilez le code source en utilisant cette commande (une seule ligne):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(vous pouvez essayer de sauter cette étape et d'utiliser l'exécutable prêt à l'emploi, mais cela n'a pas fonctionné pour moi)
Ensuite, vous pouvez réellement réparer la vidéo. Vous avez besoin à la fois de la vidéo cassée et d'un exemple de vidéo de travail.
Comment réparer la vidéo
Trouvez une autre vidéo de travail, idéalement à partir de la même caméra et de préférence au moins aussi longue que celle qui est cassée; également la même résolution si possible (je crois que cela peut aider mais n’est pas indispensable).
Exécutez cette commande dans le dossier où vous avez décompressé et compilé Untrunc mais remplacez les
/path/to/...
bits par vos 2 fichiers vidéo:Ensuite, il devrait abandonner et produire, espérons-le, un fichier lisible appelé
broken-video_fixed.m4v
Ça y est tu es fait!
VLC Media Player devrait maintenant pouvoir lire le fichier. Cependant, il se peut qu’il signale des informations de longueur erronée (Untrunc essaie de deviner / résoudre ce problème, mais ne le fait pas toujours correctement). Pour résoudre ce problème, essayez de ré-encoder la vidéo via un autre programme.
[Merci au commentaire de slhck pour la suggestion d'essayer Untrunc.]
[Merci beaucoup à Federico Ponchio pour avoir codé Untrunc en premier lieu, pour résoudre ce problème précis.]
la source
untrunc-master
. Ensuite, lancez: ./untrunc goodfile.mp4 badfile.mp4 Il a fallu environ 3 minutes pour un fichier de 2 Go et je n’avais qu’à resynchroniser l’audio. Tout le reste était bien.Si quelqu'un d'autre tombe sur cette question, j'ai également essayé l'application dont Sparrow parlait, mais cela n'a pas fonctionné pour moi (voir les rapports de bugs que j'ai créés dans le référentiel de développeurs). Peut-être était-ce dû au fait qu'il ne s'agissait pas d'un fichier mp4 mais d'un fichier MOV ...
Ce qui m'a aidé est ce post: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found
Ils renvoient à un programme appelé "HD Video Repair Utility" ( http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility ), qui est beaucoup moins cher que Treasured ( http://aeroquartet.com/movierepair/repair ) . Ils ont même fait remarquer qu’il existait une version antérieure (version 1.5) qui ne coûtait rien ( http://nagasoft.cn/download/videorepair1.5.zip )!
J'ai essayé de réparer le fichier en utilisant la version 1.5 et je l'ai fait fonctionner partiellement. Après avoir ré-encodé avec ffmpeg (j'ai eu quelques erreurs), je me suis rendu compte qu'une partie de l'audio avait disparu. Dans les journaux (volontiers, l'utilitaire de réparation vidéo en contient), il n'y avait plus aucune mention de l'audio après un moment donné. Je vais le prendre tel quel ...
la source
Vous pouvez installer
docker
(disponible pour tous les principaux systèmes d'exploitation) et exécuter:La syntaxe est pour Bash sous Linux ou macOS. Ici,
GOOD-reference-file.MP4
etBAD-corrupt-file.md5
doit être dans votre répertoire actuel, et le répertoire sera monté/vol
dans le conteneur Docker.Lisez les autres commentaires pour plus d'explications.
C'était le plus rapide pour moi!
la source
Dockerfile
est disponible ici si quelqu'un veut voir ce qu'il va exécuter avant de l'exécuter sur votre ordinateur: github.com/synctree/docker-untrunc Il y a aussi unDockerfile
dans leuntrunc
référentiel actuel - je n'ai pas testé ni comparé en détail, mais mentionnez-le pour plus de précision@sparrowt Vos instructions actuelles ne fonctionnaient pas sur ma récente installation de Ubuntu 16.10. J'ai eu l'erreur suivante en compilant untrunc:
Comme expliqué dans le référentiel Untrunc , vous devrez peut-être télécharger libav séparément plutôt que d'utiliser la version du référentiel Ubuntu. Le code suivant a fonctionné pour moi:
Cela a créé un fichier appelé broken-video_fixed.mp4 qui a fonctionné pour moi. Merci beaucoup d'avoir lancé ce fil.
la source
h264dec.h
? cartrack.cpp
essaie de l'inclure et je ne peux pas le trouver n'importe où: /sudo apt-get install yasm
,sudo apt-get install libbz2-dev
et, pour surmonter une référence non définie à « clock_gettime », ajouter-lrt
à la fin de lag++
ligne de commande (voir stackoverflow.com/a/2418175/550712 ). Il converti environ les 2/3 de ma vidéo.Si untrunc ne prend pas en charge le codec dans votre fichier, vous pouvez essayer de le réparer avec un éditeur hexadécimal:
mdat
section dans le fichier "ok" par lamdat
section dans le fichier "cassé", sans l'en-tête (c.-à-d. ne copie que les octets après "mdat")mdat
section, la valeur actuelle sera l'ancienne taille ("ok"mdat
taille de la section du fichier ), remplacez-la par la nouvelle taille (" "cassé"mdat
section de fichier )J'ai fini par coder un programme simple pour le faire: https://github.com/golimarrrr/fix-3gp
Le programme et manuellement à l’aide de l’éditeur hexadécimal doivent créer le même fichier fixe
la source
Avez-vous essayé d'ouvrir le fichier avec VLC Player ? Il est généralement très efficace pour réparer les fichiers endommagés.
la source