Beschädigtes MP4 [Aufzeichnung unterbrochen]

Ich habe eine MP4-Datei mit PlaysTV aufgenommen und mein Computer hatte mitten in der Aufnahme einen Stromausfall. Ich bin mir sicher, dass die Datei gültige Daten enthält, es ist nur so, dass kein Mediaplayer sie erkennen wird.

Um es zu beheben, habe ich Avidemux ausprobiert, ich habe zahlreiche Programme ausprobiert, die in anderen Fragen zu Stackexchange aufgeführt sind. Und bisher hat nichts funktioniert.

Die Ausgabe von ffmpeg -i lautet wie folgt:

  libavutil      55. 24.100 / 55. 24.100
  libavcodec     57. 43.100 / 57. 43.100
  libavformat    57. 37.100 / 57. 37.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 46.100 /  6. 46.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000262d040] moov atom not found
2016_05_27_20_08_12-ses.mp4: Invalid data found when processing input

Mediainfo-Ausgabe:

General
Complete name                            : F:\vids\2016_05_27_20_08_12-ses.mp4
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (mp41/isom)
File size                                : 1.21 GiB

Es gibt wahrscheinlich kostenpflichtige Dienste, die diese Datei für mich reparieren, aber da es sich um eine (ziemlich) große Datei handelt, kosten sie zu viel.

Kann mir hier jemand helfen?

Ich war gelegentlich mit mplayer erfolgreich, wenn ffmpeg sich nicht um eine Datei kümmerte. Wie dem auch sei, ich bin nicht annähernd so zuversichtlich wie Sie, dass die Datei genügend gültige Daten enthält, um von Nutzen zu sein.

Antworten (3)

Ich bin kürzlich auf genau dieses Problem gestoßen und konnte die Datei mit Untrunc reparieren , einem Programm, das speziell zur Lösung dieses Problems entwickelt wurde, wie von Sparrowt auf SuperUser vorgeschlagen :

Für diese Methode benötigen Sie:

  • eine andere Videodatei, die nicht beschädigt ist

  • eine Linux-Installation (ich habe Ubuntu 12.04 verwendet) und die grundlegende Fähigkeit, eine Befehlszeile zu verwenden.

Folgendes ist zu tun:

  1. Installieren Sie einige erforderliche Bibliotheken mit diesem Befehl:

    sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev

  2. Laden Sie den Quellcode für Untrunc aus dem Github-Repo herunter:

    wget https://github.com/ponchio/untrunc/archive/master.zip

  3. Entpacken Sie den Quellcode:

    unzip master.zip

  4. Gehen Sie in das Verzeichnis, in dem es entpackt wurde:

    cd untrunc-master

  5. 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 fertig bereitgestellte ausführbare Datei zu verwenden, aber es hat bei mir nicht funktioniert.)

  6. Dann können Sie das Video tatsächlich reparieren. Sie benötigen sowohl das defekte Video als auch ein funktionierendes Beispielvideo.

    Idealerweise sollte das Video von derselben Kamera stammen und dieselbe Auflösung haben (meins war, aber es könnte auch ohne funktionieren). Auch wenn es mindestens so lang ist wie das kaputte (vorzugsweise ungefähr gleich), kann dies hilfreich sein.

    Führen Sie diesen Befehl in dem Ordner aus, in dem Sie Untrunc entpackt und kompiliert haben, aber ersetzen Sie die Bits /path/to/... durch Ihre 2 Videodateien:

    ./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v

    Dann sollte es weglaufen und hoffentlich eine abspielbare Datei namens produzierenbroken-video_fixed.m4v

Das ist es, was du getan hast!

Der VLC Media Player sollte nun in der Lage sein, die Datei abzuspielen. Es kann jedoch die falsche Längeninformation melden (Untrunc versucht, dies zu erraten/herauszufinden, macht es aber nicht immer richtig). Um dies zu beheben, versuchen Sie, das Video mit einem anderen Programm neu zu codieren.

Ich habe diesen Fehler beim Versuch zu bauen:track.cpp:60:32: fatal error: libavcodec/h264dec.h
@unfa Ich habe das gleiche Problem, also habe ich den Port von untrunc von @anthwlock verwendet, der viel einfacher zu erstellen und zu installieren ist.

Aktualisiert : Dieses Tool kann jetzt Dateien aus mehr Quellen wiederherstellen.

Versuchen Sie es mit recovery_mp4_to_h264 . Es ist ein Befehlszeilenprogramm und erfordert eine gute Referenzdatei.

Verwendung wie angegeben:

recover_mp4 in_good_similar.mp4 --analyze
recover_mp4 in_corrupted.mp4 {out_video.h264 | out_video.hevc | --novideo} [out_audio.aac | out_audio.wav | out_audio.mp3 | out_audio.raw | --noaudio] [options]
Ich hatte das schon einmal versucht, da stand, dass das Format nicht unterstützt wird.
Restore.media , das Unternehmen, das recover_mp4, bietet diesen Download nicht mehr an und repariert stattdessen Dateien nur online über ihre Website (gegen Gebühr). Sie können immer noch eine frühere Version dieses Tools erhalten (legal; Restore.media bietet sogar den direkten Link für den Download ). Leider ist es Closed Source und nur für Windows (32/64 Bit) verfügbar ...

Sie können auch, um sich Ärger zu ersparen, zuerst überprüfen, ob die Daten überhaupt vorhanden sind. Die Dateigröße von 1,21 GB, klingt das für die Zeit bis zum Stromausfall korrekt?

Ich spreche das an, weil einige Programme die Daten zuerst in den Speicher schreiben ... manchmal sehr lange große Datenblöcke, bevor sie tatsächlich auf die Festplatte übertragen werden.

Bei einem MP4 sollte das Video, wenn es gültige Header hat, bis zum letzten guten Paket abgespielt werden, das die richtigen Schlüssel/i-Frames enthält.

Was mir in den Sinn kommt, ist, dass die Daten möglicherweise nicht da sind, da sie in den Speicher geschrieben wurden, aber nicht auf die Festplatte - ich würde eine Testaufzeichnung machen (unter Berücksichtigung der Zeit, die sie "sein sollte", und die Datei vergleichen Größen). Bevor Sie durch Reifen springen.

Das MOOV-Atom, das Stream-Informationen und Sample-Positionen enthält, wird zum Zeitpunkt der Fertigstellung der Datei geschrieben, dh wenn alle Media-Stream-Daten auf die Festplatte übertragen wurden. Sie können eine MP4 mit einem MOOV-Atom im Voraus nur mit den Stream-Informationen haben, wodurch die Datei abspielbar, aber nicht durchsuchbar ist. Allerdings schreiben nur sehr wenige Apps oder Geräte MP4s auf diese Weise.
Bandicam, eine sehr beliebte Bildschirmaufnahmeanwendung, hat eine Option, wie oft sie die im RAM erfassten Daten auf die Festplatte schreibt, weshalb ich sie erwähnt habe – nur um es zu überprüfen. Es gibt so viele Softwareanwendungen da draußen. Eine nicht durchsuchbare Datei kann auch mit ffmpeg repariert werden, und VLC kann dies auch durch Einfügen der richtigen Schlüsselbilder tun. Ein weiteres Beispiel für größere Cache-Umschreibungen sind AJA-Produkte, von denen einige erst nach 60 Sekunden auf die Festplatte schreiben.
Ich habe versucht, eine Freemium-Software zu verwenden, um zu sehen, ob sie wiederhergestellt werden kann, und ja, die Daten sind definitiv vorhanden. Die Videodaten sind mindestens. Aber wie gesagt, ich möchte nicht wirklich Software für eine Videodatei kaufen, die ich nicht so oft brauche.