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.

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.