2017-11-09 12 views
0

ich mit einem Befehl einen Screenshot von einer Remote-Video-Datei mit ffmpeg erhalten wie ffmpeg -ss $TIME -i $URL -frames:v 1 -filter:v $FILTER file.jpg (-ss kommt vor -i für schnelle https://trac.ffmpeg.org/wiki/Seeking sucht). $FILTER ist, wie ich den Screenshot, wie Zuschneiden/Größe ändern möchte. In diesem Fall ist es "crop=iw-5:ih-5, scale=100:100:force_original_aspect_ratio=increase, crop=100:100")Run ffmpeg einmal, sondern bekommt mehrere Screenshots

Wenn ich 3 Screenshots, 3 Sekunden, 5 Sekunden und 14 Sekunden erhalten möchte, muss ich diesen Befehl 3 separate Male ausführen, 3, 5 und 14 als $TIME übergeben. Aber ist es möglich, den Befehl einmal auszuführen, aber mehrere Screenshot-Dateien für die verschiedenen Zeiten ausgeben zu lassen?

Und würde ffmpeg das tun in einer Weise, wo es die Round-Trip-Remote-Anfrage nur 1 Mal anstelle von 3 machen würde? In diesem Fall wäre es effizienter. Wenn nicht, dann ist es vielleicht besser, die 3 Anfragen separat zu machen, da ich es parallel machen könnte.

Antwort

1

Für Screenshots in gleichen Abständen siehe wiki.

Für bestimmte Zeitstempel Sie können es in einem Arbeitsgang mit dem select Filter:

ffmpeg -i <input> -filter:v "select='0-eq(t,3)-eq(t,5)-eq(t,14)',<other filters>" -vsync vfr file%01d.png 

wo t der in Sekunden Präsentation Zeitstempel ist.

Sie können in bestimmten Intervallen auch nach I-Frames suchen, indem Sie between und pict_typePICT_TYPE_I verwenden.

+1

Vielleicht, fügen Sie den Eingang '-t 15' hinzu, um das Filtern der gesamten Datei zu vermeiden. – Mulvya

+0

@aergistal Also verwende ich nicht den Buchstaben 't' im Befehl? Was ist mit Präsentationszeitstempel gemeint? – user779159

+0

@Mulvya 15 ist, weil der letzte Screenshot bei 14 ist? Nehmen wir an, das Video ist 2000 Sekunden lang und der letzte Screenshot, den ich brauche, ist 1995. Dann filtere ich die ganze Datei trotzdem? Gibt es eine Möglichkeit, es zu tun, wo es nur den Teil der Datei, die Sie wollen, wie es in dem Befehl in meiner ursprünglichen Frage (aber für viele Screenshots und nicht nur eins). – user779159