2012-09-21 16 views
5

Ich habe versucht, Keyframes aus Video mit ffmpeg 0.11.1 zu extrahieren. Bisher extrahieren alle Befehle, die ich ausprobiert habe, keine Keyframes, sondern geben alle Frames zurück, dh 25fps * Gesamtzeitanzahl der Frames in der Ausgabe. Ich habe versucht, keyint_min auf 25 zu setzen, um sicherzustellen, dass pro Sekunde maximal 1 Keyframe zur Verfügung steht.ffmpeg Keyframe-Extraktion

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -g 250 -keyint_min 25 -i C:\test.mp4 -vsync 2 -f image2 C:\testTemp\thumbnails-%02d.jpeg 

Aber immer noch alle Frames zurückgegeben werden.

Dann habe ich versucht, die Keyframes um 20 Sekunden zu trennen.

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)*(isnan(prev_selected_t)+gte(t-prev_selected_t\,20))' -vsync 0 -f image2 C:\testTemp\%09d.jpg 

Wieder dasselbe Ergebnis, alle Frames werden zurückgegeben.

Was soll ich tun?

Antwort

9

In Ihrem ersten Befehl verwenden Sie den Filter als Eingabemöglichkeit. Ich weiß nicht, wie ffmpeg das interpretieren wird.

Try this:

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' C:\testTemp\%09d.jpg 

ändern 25 auf die Bildrate der Quelle: 30000/1001 für NTSC-Video, 24000/1001 für NTSC-Film, 25 für PAL, usw.

Steuerausgang Qualität mit der oder -qscale:v Option (nur -qscale in alten ffmpeg genannt). Der Bereich für mpeg * ist 1-31, wobei 31 die schlechteste Qualität ist.

Das nächste Mal daran denken, dass Fragen zur Verwendung von ffmpeg bei superuser.com gestellt werden müssen, da stackoverflow speziell für die Programmierung gedacht ist.

+0

Hallo danke, aber ich habe einen Fehler bekommen Fehler beim Initialisieren der Filterauswahl mit Argumenten. Die Anzahl der Öffnungs- und Schließvorgänge ist nicht gleich, daher habe ich versucht, den Auswahlteil zu ändern, um = 'eq (Bildtyp \, I), Satz = N/(25 * TB)' auszuwählen und dann = 'eq (Bildtyp \, I), setpts = 'N/(25 * TB)' 'Aber beide haben den gleichen Fehler zurückgegeben –

+0

Entschuldigung. Schlechter Job. Ich habe den Befehl aktualisiert, kann aber zu diesem Zeitpunkt nicht testen. – LordNeckbeard

+0

Ich bekomme: Fehlende ')' oder zu viele Argumente in 'eq (pict_type \, I)' und dann ein anderer Fehler als Fehler beim Analysieren Ausdruck 'eq (pict_type \, I)' –