Hacer un clip a partir de un vídeo con FFMPEG

Hacer un clip a partir de un vídeo con FFMPEG

Quiero hacer un clip de un video con FFmpeg con un video de 2 segundos cada mminuto, 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 -ssestá el inicio del clip y -tla 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_adtstoascpara archivos MP4. Pero esto debería darte el vídeo que deseas.

información relacionada