Wie kann ich eine Videodatei anhand eines Skripts validieren?

8

Ich habe einen Server mit vielen Videodateien. Nach einer Wiederherstellung habe ich festgestellt, dass sich die Prüfsumme einiger Dateien geändert hat. Da ich keine Prüfsummen für alle Dateien habe, wollte ich ein Skript schreiben, um die Integrität der Datei zu überprüfen. Es ist einfach für Archive ( tar t , unzip -t , rar t usw.) oder Bilder ( convert image.jpg /tmp/test.png ).

Welche Optionen muss ich an mplayer oder vlc oder ein anderes Video-Tool unter Linux weitergeben, um den gleichen Effekt zu erzielen (d. h. den Dateiinhalt überprüfen, ohne das gesamte Video ansehen zu müssen)?

    
Aaron Digulla 21.05.2009, 20:14
quelle

5 Antworten

5

Es klingt wie das, was Sie tun möchten:

%Vor%

und parse dann den Ausgabe- und Rückgabewert, um zu sehen, ob & amp; entschlüssle den Stream. Dies wird einige Zeit dauern (aber schneller als Echtzeit). Wenn Sie etwas noch schneller möchten, hier sind einige weitere Vorschläge:

Eine einfache Sache wird sein, ein

zu machen %Vor%

in der Datei, und analysieren Sie dann die Ausgabe und betrachten Sie den Rückgabewert für etwas, das vernünftig aussieht.

In Anbetracht der Tatsache, dass die Prüfsummen falsch sind, wird es schwer zu erkennen sein, ob dies ein Problem für Ihren Media Player ist oder nicht (mplayer, vlc, totem, etc.). Ein guter Media Player toleriert viele Bit- oder Byte-Level-Fehler mit geringer Auswirkung auf die resultierende Wiedergabe. Ein sehr strikter Mediaplayer wird beendet, wenn er einen ungültigen oder falschen Codec & amp; Wrapper-Bytes.

Um die Wrapper (Container) Bytes zu überprüfen, könnten Sie etwas wie

tun %Vor%

Das Problem ist, dass mencoder eine .avi-Datei für die Ausgabe erstellen möchte. Wenn Ihre Eingaben .avi sind, dann wird das großartig funktionieren.

Sie können eine ähnliche ffmpeg-Befehlszeile wie folgt aufrufen:

%Vor%

Wenn es sich bei den Dateien um MP4-Dateien handelt, sollten Sie einen Blick auf mp4box ( Ссылка ) werfen, um eine Datei zu erstellen ähnliche Aufgabe. Die Matroska-Tools sind auch gut für diese Art von Sache. ( Ссылка )

    
slacy 21.05.2009 20:46
quelle
2

Wenn Sie mit MP4-Dateien arbeiten, sollten Sie sich das Projekt mpeg4ip ansehen, speziell die Tools wie mp4videoinfo oder mp4info . Dies kann genug sein, um Ihre Bedürfnisse zu erfüllen, und ist sehr schnell.

Von der Titelseite:

  • mp4dump Dienstprogramm, um MP4-Datei-Meta-Informationen in Textform auszugeben
  • mp4trackdump Dienstprogramm zum Speichern von MP4-Dateiinformationen in Textform
  • mp4info Dienstprogramm zum Anzeigen der MP4-Dateizusammenfassung
  • mp4videoinfo Dienstprogramm zum Ablegen von Informationen über MP4-Datei-Videospuren
  • avidump Dienstprogramm zum Anzeigen der AVI-Dateizusammenfassung
  • yuvdump Dienstprogramm zum Anzeigen einer unverarbeiteten Videodatei auf dem Bildschirm
  • mpeg_ps_info Dienstprogramm zum Anzeigen von Streams in einem MPEG-Programm-Stream oder einer VOB-Datei
  • mpeg_ps_extract Dienstprogramm zum Extrahieren elementarer Streams in einem MPEG-Programm-Stream oder einer VOB-Datei

Hier ist eine Beispielausgabe eines MP4, aufgenommen mit meinem Nokia N95:

%Vor%     
Stu Thompson 02.06.2009 13:27
quelle
2

Abgesehen von all den Videos gibt es keinen "perfekten" Weg, dies zu tun.

Videodateien sind ziemlich robust - als Experiment nahm ich eine zufällige MPEG-4-Videodatei, öffnete sie in einem Hex-Editor und begann, Bytes zu ändern. mplayer und Quicktime spielten sie immer noch ohne Fehler ab.

Ich musste Tausende von Bytes löschen, bevor irgendein Fehler von mplayer kam:

%Vor%

Es wäre nicht schwierig, ein Skript zu schreiben, das mplayer für jedes Video ausführt und die Ausgabe auf Fehlermeldungen / Warnungen hin überprüft, wenn sich die geänderten Bytes nicht im Dateiheader befinden oder viele Daten geändert wurden Du wirst sie nie alle finden

    
dbr 02.06.2009 14:25
quelle
1

Da mplayer Optionen zur Konvertierung von einem Videoformat in ein anderes bietet, die für einen solchen Test gut genug sein könnten, vorausgesetzt, mencoder gibt ein Fehler, wenn es die Eingabedatei nicht dekodieren kann (ich habe das nicht getestet). Dies funktioniert ähnlich wie der Bildtest , den Sie erwähnt haben (convert image.jpg /tmp/test.png)

    
lothar 21.05.2009 20:18
quelle
-1

Ich empfehle Ihnen, sha1sum zu verwenden, ein Befehlszeilenprogramm, das Sie wahrscheinlich bereits haben (und wenn nicht, haben Sie wahrscheinlich auch md5sum, was für diesen Job in Ordnung wäre) ... Sie müssen nur den Standard von sha1sum vor und nach der Wiederherstellung ...

    
dicroce 21.05.2009 20:27
quelle

Tags und Links