
m
Ich möchte einen Clip aus einem Video mit FFmpeg mit 2-Sekunden-Video pro Minute erstellen , wobei
m = video_length / 5
Ich habe beispielsweise ein Video, das 10 Minuten lang ist. Der Videoclip hat eine Gesamtlänge von 10 Sekunden (5 Segmente zu je 2 Sekunden) und besteht aus diesen Video-Zeitstempelbereichen:
00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02
Dadurch wird aus dem Video eine Art Trailer erstellt.
Ich weiß, dass ich das mit Segmenten erreichen kann, aber ich komme nicht mit dem gesamten Vorgang klar.
Antwort1
Dies können Sie mit dem Auswahlfilter in einem Rutsch erledigen.
ffmpeg -i in.mp4
-vf select='lt(mod(t,120),2)',setpts=N/FRAME_RATE/TB
-af aselect='lt(mod(t,120),2)',asetpts=N/SR/TB
out.mp4
Antwort2
Ich kenne eine Methode, die Siekönnteverwenden. Es ist allerdings ein bisschen chaotisch.
Extrahieren Sie die Clips mit einem Befehl wie diesem:
ffmpeg -i -ss <time to start> -t <duration> <output clip filename>
Sie extrahieren die Clips in diesem Format, wobei -ss
der Anfang des Clips und -t
die Dauer des Clips angegeben sind. Sobald Sie diese extrahiert haben, können Sie sie wie folgt zusammenfügen:
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
Bitte beachten Sie, dass diese Form der Verkettung nicht mit allen Videoformaten funktioniert und Sie möglicherweise andere Argumente eingeben müssen, z. B. -bsf:a aac_adtstoasc
für MP4-Dateien. Sie sollten damit jedoch das gewünschte Video erhalten.