2017-04-13 7 views
1

Ich mache einige Bildverarbeitung auf mehreren tausend kleinen .avi-Dateien. Eine kleine Teilmenge der Dateien scheint beschädigt zu sein.MATLAB: VideoReader Fehlerüberprüfung

Eine Art von Schaden scheint ein bestimmter Frame des Videos zu sein, der nicht eingelesen werden kann. Ich habe dafür einen try-catch-Block hinzugefügt und es funktioniert gut.

Eine andere Art von Schaden ist jedoch laut VLC "Defekter oder fehlender AVI-Index". Wenn VideoReader versucht, Dateien mit dieser Art von Schaden zu öffnen, stürzt Matlab vollständig mit dem Fehler ab: "MATLAB ist auf ein internes Problem gestoßen und muss geschlossen werden." Und Details Nachricht, "Segmentierung Verletzung erkannt am Mittwoch Apr ..."

Also meine Frage ist, gibt es eine Möglichkeit, Fehler zu überprüfen/überspringen Videos, die diesen Absturz verursachen würde?

Antwort

2

Sie können ffmpeg zum Überprüfen der Integrität der Videodatei verwenden.

Siehe auch: How can I check the integrity of a video file (avi, mpeg, mp4…)?
herunterladen statische Aufladung von ffmpeg und setzt ffmpeg.exe in Ihrem Arbeitsverzeichnis.

Führen Sie ffmpeg in Matlab mit dem Befehl system aus und überprüfen Sie den Rückgabestatus.
Wenn der Status nicht Null ist, ist die Videodatei beschädigt.
Sie können die Ausgabefehlermeldung auch nach feinerer Logik analysieren.

Hier ist ein Codebeispiel:

filename = 'input.avi'; 

if (isunix) 
    [status, cmdout] = system(['ffmpeg.exe -v error -i ', filename, ' -f null - 2']); 
else 
    [status, cmdout] = system(['ffmpeg.exe -v error -i ', filename, ' -f null - 2>&1']); 
end 

if (status ~= 0) 
    %Dispaly cmdout if file is damaged. 
    disp([filename, ' is corrupted. Error: ', cmdout]); 
end 
+0

Dank. Ich stoße auf ein Problem, das scheint zu funktionieren, um einige kaputte Indexe zu überprüfen, aber es passiert, als wären sie gute Videos auf anderen. Ich bin nicht sicher, was der Unterschied zwischen zwei Videos ist, die beide gebrochenen Index sagen, aber zwei verschiedene Ausgaben produzieren. Irgendeine Idee? – Austin

+0

Ohne eine Beispieldatei ist es schwer zu sagen ... Verwenden Sie Windows oder Linux? Sie können versuchen, das 'ffprobe'-Tool auszuführen (heruntergeladen mit' ffmpeg'). Suchen Sie nach AVI-spezifischen Formatanalyse-Tools. AVI-Videodateien sind ohne Index spielbar (einfach unbrauchbar). Sie können versuchen, die Dateien zu reparieren, ich fand 'DivFix ++' mit Google (nie benutzt). – Rotem