Automatisierung der QC zum Auffinden beschädigter Videodateien

Ich habe Hunderte von visuell (!) beschädigten Videoclips in H.264, die sich in einem größeren Satz von Dateien „verstecken“. Da sie neu transcodiert wurden, sind sie jetzt alle technisch in Ordnung und werden gut abgespielt, aber sie werden bei jedem zweiten Frame grün blinken.

Mir ist aufgefallen, dass ich, wenn ich eine Datei durch QCTools laufen lasse, sie anhand des Werts „zeitliche Ausreißer“ identifizieren kann, da sich jeder zweite Frame drastisch vom vorherigen unterscheidet (wegen dieser grünen Blitze).

Ich möchte QCTools auf jede Datei in diesem großen Satz verweisen, aber nur:

  • einen kleinen Teil davon verarbeiten - es bleibt keine Zeit, jede Datei in ihrer gesamten Dauer durchzugehen
  • nur einen Wert abrufen - zeitliche Ausreißer

Ich habe die Hilfe der QCTools CLI-Version durchgesehen und konnte keine Möglichkeit finden, dies zu tun. Hat jemand irgendwelche anderen Ideen auf dem Identifizieren dieser Akten? Gibt es noch eine Möglichkeit, dies mit QCTools zu tun?

Wenn eine Datei beschädigt ist, ist sie im gesamten Videostream beschädigt oder gibt es gute Teile darin?
Wenn der Speicher reicht, umschließt QCTools meistens nur ffmpeg-Befehle, sodass Sie möglicherweise herausfinden können, welcher ffmpeg-Befehl den Wert der zeitlichen Ausreißer berechnet, und dies automatisieren.
@MichaelLiebman Ausgezeichnete Idee, ich werde nach einem ffmpeg-Filter suchen, der die Arbeit erledigt, und ihn hier posten, wenn ich etwas finde. Danke dir!
Grüner Blitz hört sich an, als könnte es sich um einen GPU-Decodierungsfehler handeln. Überprüfen Sie die Dateien auf einem anderen Computer, um sicherzustellen, dass sie tatsächlich beschädigt sind.

Antworten (1)

Da QCTools die ffmpeg/ffprobe umschließt und den Signalstats-Filter verwendet, erreiche ich hier, was ich wollte:

ffprobe -f lavfi movie="Bad.mp4","signalstats=tout" -read_intervals %00:01 -show_frames

-show_frames gibt die Frame-Zusammenfassung in STDOUT aus. Es enthält den Wert, den ich brauche:

TAG:lavfi.signalstats.TOUT=0

-read_intervals erlaubt mir, nur einen kleinen Teil der Datei zu verarbeiten, um Signalstatistiken von nur einem kleinen Teil der Datei zu erhalten

Wir können auch überprüfen, wie QCTools das macht, indem wir uns den Quellcode hier ansehen: https://github.com/bavc/qctools/blob/master/Source/GUI/BigDisplay.cpp#L844-L845