Gestern habe ich eine Szene mit meinem Handy gedreht, aber plötzlich ist die Anwendung abgestürzt und als ich versuche, das erzeugte m4v zu öffnen, heißt es, dass es beschädigt ist.
Ich habe die Videodateien (ca. 36 MB) auf meinen PC heruntergeladen und versuche, sie zu öffnen und zu reparieren. Können Sie mir einen Weg vorschlagen, dies zu tun?
FFMPEG info
Wie in den Kommentaren vorgeschlagen, versuche ich mit diesem Befehl zu überprüfen, was FFMPEG über diese Datei sagt
ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt
Hier ist das Ergebnis:
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
Die letzten beiden Zeilen werden rot angezeigt.
Antworten:
Es ist möglich, die defekte mp4- oder m4v-Datei mit Untrunc zu reparieren .
Für diese Methode benötigen Sie eine andere Videodatei von demselben Gerät, die nicht beschädigt ist.
Wie installiert man
untrunc
Zum Kompilieren benötigen Sie eine Linux-Installation (im Idealfall Ubuntu) und die grundlegende Fähigkeit, eine Befehlszeile zu verwenden. Sie können diesen Teil auch überspringen und
untrunc
über Docker ausführen (siehe Antwort unten ), wenn Sie das haben.Das ist was zu tun ist:
Installieren Sie mit diesem Befehl einige erforderliche Bibliotheken:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Holen Sie sich den Quellcode für Untrunc aus dem GitHub-Repository (wählen Sie eine Methode):
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
Kompilieren Sie den Quellcode mit diesem Befehl (alle eine Zeile):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(Sie können versuchen, diesen Schritt zu überspringen und die bereitgestellte ausführbare Datei zu verwenden, aber es hat bei mir nicht funktioniert.)
Dann kannst du das Video tatsächlich reparieren. Sie benötigen sowohl das defekte Video als auch ein funktionierendes Beispielvideo.
Wie man das Video repariert
Finde ein anderes funktionierendes Video, idealerweise von derselben Kamera und vorzugsweise mindestens so lange wie die kaputte. auch die gleiche auflösung wenn möglich (ich glaube das kann helfen ist aber nicht unbedingt erforderlich).
Führen Sie diesen Befehl in dem Ordner aus, in dem Sie Untrunc entpackt und kompiliert haben, aber ersetzen Sie die
/path/to/...
Bits durch Ihre 2 Videodateien:Dann sollte es weglaufen und hoffentlich eine abspielbare Datei namens erzeugen
broken-video_fixed.m4v
Fertig!
Der VLC Media Player sollte nun in der Lage sein, die Datei abzuspielen. Es kann jedoch sein, dass die Längenangaben falsch sind (Untrunc versucht, dies zu erraten / herauszufinden, bringt es aber nicht immer richtig). Um dies zu beheben, versuchen Sie, das Video mit einem anderen Programm neu zu codieren.
[Danke an slhck's Kommentar für den Vorschlag, Untrunc auszuprobieren.]
[Vielen Dank an Federico Ponchio für die Codierung von Untrunc, um genau dieses Problem zu lösen.]
quelle
untrunc-master
. Führen Sie dann Folgendes aus: ./untrunc goodfile.mp4 badfile.mp4 Es dauerte ungefähr 3 Minuten für eine 2-GB-Datei, und ich musste nur das Audio neu synchronisieren. Alles andere war in Ordnung.Wenn jemand anderes darüber stolpert, habe ich auch versucht, dass der App-Spatz darüber spricht, aber es hat bei mir nicht funktioniert (siehe einige Fehlerberichte, die ich im Entwickler-Repository erstellt habe). Vielleicht lag das daran, dass es keine mp4-Datei, sondern eine MOV-Datei war ...
Was mir geholfen hat, war dieser Beitrag: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found
Sie verlinken auf ein Programm namens "HD Video Repair Utility" ( http://grauonline.de/cmsimple2_6/de/?Solutions:HD_Video_Repair_Utility ), das weitaus billiger ist als Treasured ( http://aeroquartet.com/movierepair/repair ) . Sie wiesen sogar darauf hin, dass es eine frühere Version (Version 1.5) gab, die nichts kostete ( http://nagasoft.cn/download/videorepair1.5.zip )!
Ich habe versucht, die Datei mit der Version 1.5 zu reparieren und habe sie teilweise zum Laufen gebracht. Nach dem Umcodieren mit ffmpeg (einige Fehler sind aufgetreten) stellte ich fest, dass ein Teil des Audios weg war. In den Logs (gerne hat das Video Repair Utility welche) wurde nach einer bestimmten Zeit kein Audio mehr erwähnt. Ich nehme an, wie es ist ...
quelle
Sie können Folgendes installieren
docker
(für alle gängigen Betriebssysteme verfügbar) und ausführen:Die Syntax ist für Bash unter Linux oder macOS. Hier
GOOD-reference-file.MP4
undBAD-corrupt-file.md5
müssen sich beide in Ihrem aktuellen Verzeichnis befinden, und das Verzeichnis wird/vol
im Docker-Container angehängt .In den anderen Kommentaren finden Sie ausführlichere Erklärungen.
Das war das schnellste für mich!
quelle
Dockerfile
ist hier verfügbar, wenn jemand sehen möchte, was dies vor dem Ausführen auf Ihrem Computer ausgeführt wird: github.com/synctree/docker-untrunc Es gibt auch eineDockerfile
im aktuellenuntrunc
Repository - ich habe weder getestet noch verglichen sie im Detail, aber der Vollständigkeit@sparrowt Ihre aktuellen Anweisungen funktionierten bei meiner letzten Ubuntu 16.10-Installation nicht. Beim Kompilieren von untrunc ist folgender Fehler aufgetreten:
Wie im Untrunc- Repository erläutert , müssen Sie libav möglicherweise separat herunterladen, anstatt die Version im Ubuntu-Repository zu verwenden. Der folgende Code hat bei mir funktioniert:
Dadurch wurde eine Datei mit dem Namen broken-video_fixed.mp4 erstellt, die für mich funktioniert hat. Vielen Dank, dass Sie diesen Thread initiiert haben.
quelle
h264dec.h
? weiltrack.cpp
versucht, essudo apt-get install yasm
,sudo apt-get install libbz2-dev
und eine undefinierte Bezugnahme auf ‚clock_gettime‘ zu überwinden, hinzuzufügen-lrt
zu dem Ende derg++
Befehlszeile (siehe stackoverflow.com/a/2418175/550712 ). Es hat ungefähr 2/3 meines Videos konvertiert.Falls untrunc den Codec in Ihrer Datei nicht unterstützt, können Sie versuchen, ihn mit einem Hex-Editor zu reparieren:
mdat
Abschnitt in der "ok" -Datei durch denmdat
Abschnitt in der "broken" -Datei ohne den Header (dh kopieren Sie nur die Bytes nach "mdat").mdat
Abschnitts an, der aktuelle Wert wird die alte Größe sein ("ok" Dateigröße desmdat
Abschnitts), ersetzen Sie ihn durch die neue Größe (" kaputte "Dateigröße desmdat
Abschnitts)Ich habe ein einfaches Programm dafür programmiert: https://github.com/golimarrrr/fix-3gp
Sowohl das Programm als auch von Hand mit dem Hex-Editor sollten die gleiche feste Datei erstellen
quelle
Haben Sie versucht, die Datei mit VLC Player zu öffnen ? Es ist in der Regel recht gut bei der Reparatur beschädigter Dateien.
quelle