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)?
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. ( Ссылка )
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:
Hier ist eine Beispielausgabe eines MP4, aufgenommen mit meinem Nokia N95:
%Vor%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
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)
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 ...
Tags und Links linux video validation