Você pode fazer isso usando o filtro de seleção, de uma só 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
Eu quero fazer um clipe de um vídeo com o FFmpeg com vídeo de 2 segundos a cada m
minutos, onde
m = video_length / 5
Por exemplo, tenho um vídeo com 10 minutos de duração. O clipe de vídeo terá 10 segundos de duração total (5 segmentos por 2 segundos) e será composto desses intervalos de timestamp de vídeo:
00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02
Isso produzirá uma espécie de trailer do vídeo.
Eu sei que posso conseguir isso com o segmento, mas não consigo descobrir todo o processo.
Eu sei de um método que você pode usar. É um pouco confuso, no entanto.
Extraia os clipes com um comando como este:
ffmpeg -i -ss <time to start> -t <duration> <output clip filename>
O que você faz é extrair os clipes com este formato, em que -ss
é o início do clipe e -t
é a duração do clipe. Depois de extrair esses dados, você poderá concatená-los com:
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
Por favor, note que esta forma de concatenação não funciona com todos os formatos de vídeo, e você pode ter que lançar alguns outros argumentos, como -bsf:a aac_adtstoasc
para arquivos MP4. Mas isso deve te dar o vídeo que você deseja.