
Quiero hacer un clip de un video con FFmpeg con un video de 2 segundos cada m
minuto, donde
m = video_length / 5
Por ejemplo tengo un vídeo que dura 10 minutos. El videoclip tendrá una duración total de 10 segundos (5 segmentos por 2 segundos) y estará compuesto por estos rangos de marcas de tiempo de video:
00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02
Esto producirá una especie de avance del video.
Sé que puedo lograr eso con el segmento pero no puedo entender todo el proceso.
Respuesta1
Puedes hacer esto usando el filtro de selección, de una sola vez.
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
Respuesta2
Conozco un método que ustedpodríausar. Aunque es un poco complicado.
Extrae los clips con un comando como este:
ffmpeg -i -ss <time to start> -t <duration> <output clip filename>
Lo que haces es extraer los clips con este formato, donde -ss
está el inicio del clip y -t
la duración del clip. Una vez que los haya extraído, puede concatenarlos con:
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
Tenga en cuenta que esta forma de concatenación no funciona con todos los formatos de vídeo y es posible que deba incluir algunos otros argumentos, como -bsf:a aac_adtstoasc
para archivos MP4. Pero esto debería darte el vídeo que deseas.