verkürzen Sie das Video, indem Sie Frames löschen

2

Ich versuche, ein Beispielvideo zu erstellen, das jeden halben Sekundenrahmen mit ffmpeg zeigt.

Wenn ein Video beispielsweise 24 fps hat, möchte ich alle 12, 24, 36, 48 .. und so weiter eine Videoshow erstellen und Videos mit diesen Bildern erstellen.

Ich habe einen Weg gefunden, dies zu tun, indem ich Bilddateien extrahiere und das Ergebnis in ein Video kodiere.

ffmpeg -i input -vf select = 'not (mod (n \, 12))' -vsync vfr image_% 05d.jpg

und um Videos zu erstellen,

ffmpeg -framerate 24 -i image_% 05d.jpg -c: v libx264 -r 24 -pix_fmt yuv420p output.mpeg

Nun möchte ich wissen, ob es eine Möglichkeit gibt, den Schritt des Speicherns von Bilddateien zu überspringen und das Video in einem Vorgang erneut zu kodieren.

David Dohwan Kim
quelle

Antworten:

0

Benutzen

ffmpeg -i input -vf select='not(mod(n\,12)),setpts=N/FRAME_RATE/TB' -r 24 output.mp4

Die Setpts sorgen dafür, dass die ausgewählten Frames entsprechend der Ausgangs-Frame-Rate in fortlaufender Reihenfolge Zeitstempel haben.

Gyan
quelle
Wow, danke Mulvya, ich weiß deine Hilfe wirklich zu schätzen. Es sieht so aus, als würde ich Audio mit der Option -an ablegen, es funktioniert perfekt.
David Dohwan Kim
er hat den folgenden Fehler für mich Invalid chars ',setpts=N/FRAME_RATE/TB' at the end of expression... irgendwelche Vorschläge?
fzyzcjy
Setzen Sie das Ende vor das Komma.
Gyan