Ich habe einige Befehle geschrieben, die jede Stunde, jede Minute und jede Sekunde ein Bild aufnehmen.
Nach der Vernichtung der Bilder werden die Screenshots tatsächlich aus einer halben Stunde, einer halben Minute und einer halben Sekunde gemacht. Sie werden in Kürze verstehen.
Der Befehl zum Beispiel, jede Minute ein Bild aufzunehmen, ist es, das Bild in der halben Minute zu extrahieren, was 00:00:30, 00:01:30, 00:02:30 usw. bedeutet. Deshalb benenne ich den Dateinamen wie folgt:
Wir können prüfen, ob die folgenden Bilddateien identisch sind:
D 00:03:29.012.pngist identisch mit C 00:03:29.500.png.
D 00:03:29.024.pngist identisch mit B 00:03:30.000.png.
D 00:03:29.036.pngist identisch mit C 00:03:30.500.png.
Das sind meine Erkenntnisse aus Versuchen und Fehlern heute Morgen. Hier kommt meine Frage:
Nehmen wir als Beispiel "Einen Frame zu jeder Minute extrahieren". Wie können wir erhalten / was ist der Befehl, um die Frames zu erhalten 00: 00: 00.000, 00: 00: 01.000, 00: 00: 02.000 usw.?
Ich habe gerade von ffmpegdiesem Morgen gehört. Ich weiß immer noch nicht, was -copyts(nach dem Lesen der Dokumente ) bedeutet und wann ich sie -ss positionvor -iund wann setzen muss. Korrigieren Sie mich bitte , wenn ich die falschen Befehle verwende.
1 Antwort auf die Frage
2
Ely
Der FPS-Filter ist so konzipiert, dass er Frames intelligent löscht / dupliziert, um die Ausgangs-FPS basierend auf den Eingangs-FPS anzupassen. Wenn Sie darum bitten, jede Minute ein Bild auszugeben, wählen Sie ein Bild in der Mitte des Fensters 00: 00-01: 00 aus und lassen Sie alle anderen aus. Deshalb erhalten Sie Bilder um 00:30, 01:30 Uhr. usw..
Haben Sie in Betracht gezogen, ein bat / bash-Skript zu erstellen, das dies tut?
for i in 0..50 ffmpeg -ss %i:oo -i input.mp4 -vframes 1 out-%i.png
Sie können auch Folgendes tun, wenn Sie um 01:00, 02:00 [..] anstelle von 00:30, 01:30 [..] Screenshots erhalten möchten:
Oh, die zweite Methode ist klug. Aber wir haben immer noch Probleme, die erste Hälfte der Minute / Sekunde / etc zu bekommen. Ich frage mich, ob es einen anderen Befehl / Parameter anstelle des FPS-Filters gibt, um die Aufgabe gut zu erledigen? Für die erste Methode, da (denke ich) ffmpeg alle Frames verarbeitet und nur die unerwünschten Frames verwirft, wird der Befehl sehr langsam, wenn ich den letzten Teil des Videos erreicht habe? Wenn es praktisch ist, sag mir bitte auch, was ist -copyts und wo soll -ss abgelegt werden. Oder ich bin in Ordnung, sie in einem anderen Frage-Thread zu fragen :)
midnite vor 9 Jahren
0
Ich weiß es nicht wirklich. -ss muss vor einer Eingabe gesetzt werden und ordnet ffmpeg an, diesen Zeitstempel vor der Verarbeitung zu suchen. Es ist eine schnelle Suche, selbst wenn Sie am Ende des Videos stehen, wird es schnell gehen.
Ely vor 9 Jahren
2
@Ely Kannst du das in deine Antwort setzen? Ich verbrachte nur eine Stunde damit, herauszufinden, warum es nicht funktionierte, und ich bemerkte diesen Kommentar nicht einmal. Lol (töte mich)
Tallboy vor 6 Jahren
0