2012-08-10 9 views
5

Gibt es eine Möglichkeit (über Skript oder vorzugsweise einige Parameter in Aufruf ffmpeg, die ich verpasste), Frames aus einer AVI-Datei zu extrahieren und sequentiell doppelte Bilder zu ignorieren, also in der Lage zu sein, durch die Bilder zu gehen und nur die Deltas/Veränderungen zu betrachten?FFMPEG - So extrahieren Frames als Bilder beim Entfernen sequenziell doppelte Frames

Ich muss häufig Besprechungen bei der Arbeit aufzeichnen und den Client-Bildschirm, den ich gerade betrachte, ändert sich nicht viel, während wir telefonieren. Nach dem Treffen muss ich diese Bilder als Teil unserer Dokumentation und Spezifikationserfassung verwenden.

Ich weiß, dass ich nur jeden Rahmen ausgeben und sie durch ein beliebiges Duplikat-Datei-Entferner-Dienstprogramm ausführen konnte, aber das würde ALLE doppelten Rahmen entfernen. Also, wenn die Rahmen extrahiert wie folgt ging:

A, A, A, B, B, B, B, C, C, A, A, C, C, C, B, B, B ...

sie durch einen typischen doppelte Datei-Entferner Rennen, würde ich: A, B, C

Was ich möchte, ist: A, B, C, A, C, B

Die Befehl, den ich derzeit verwende, um die Bilder zu extrahieren ist:

ffmpeg.exe -i file.avi -ss 0 -sameq -f image2 -r 1 im Alter% 5d.png

Ich bekam jeden Frame vorher (Entfernen der -r 1 von oben), aber das erzeugte viel zu viele Frames zu behandeln, da diese Online-Meetings stundenlang gehen können, also für jetzt, ich Holen Sie sich ein Bild pro Sekunde aus der Datei.

Eine Windows-basierte Lösung wäre vorzuziehen, aber ich bin mir sicher, dass andere Leute an Lösungen auf anderen Plattformen interessiert wären, wenn sie verfügbar wären.

Jede Lösung oder Punkt in die richtige Richtung wird sehr geschätzt.

+0

Haben Sie jemals eine Lösung für dieses

(aber die Standardwerte funktionieren. Im Bedarfsfall hi, der Filter mpdecimate kann lo und frac durch seine Optionen eingestellt werden) finden? Ich suche fast das Gleiche. –

Antwort

7

Haben Sie mit der Option -vsync 0 versucht?

+0

Das kommt nahe, aber als ich es ausprobierte, fand 'fdupes' immer noch mehr aufeinanderfolgende identische Frames zum Aussortieren. –

+1

+1 In meinem Fall (niedrige Bildrate) hatte ich jedes Bild 50 mal dupliziert. Mit dieser Option gab es nur einen duplizierten Rahmen für jeweils 1000 nicht duplizierte Rahmen. – user2518618

+0

Kam genau in der Anzahl der Eingänge Frames für mich. Vielleicht gibt es einige ganz schwarze Übergangsrahmen, die für die anderen Kommentatoren als Duplikate erscheinen? –

0

können Sie es durch mpdecimate Videofilter (durch setpts Filter für das richtige Timing gefolgt) erreichen.
Verwenden Sie diese Option:

-vf mpdecimate,setpts=N/FRAME_RATE/TB 

Vielleicht wird es nicht mit Ihrem ursprünglichen Befehl arbeiten, und Sie werden sie brauchen verwenden, um zuerst die Original-Video zu dem Video ohne duplizierte Pakete konvertieren:

ffmpeg.exe -i file.avi -vf mpdecimate,setpts=N/FRAME_RATE/TB outfile.avi 

und dann verwenden die outfile.avi zum Erstellen der Sequenz von Bildern.