
Quero fazer um clipe de um vídeo com FFmpeg com vídeo de 2 segundos a cada m
minuto, onde
m = video_length / 5
Por exemplo, tenho um vídeo de 10 minutos. O videoclipe terá duração total de 10 segundos (5 segmentos por 2 segundos) e será composto por estes intervalos de carimbo de data/hora do 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 segmento, mas não consigo entender todo o processo.
Responder1
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
Responder2
Eu conheço um método que vocêpoderusar. É 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, onde -ss
está o início do clipe e -t
a duração do clipe. Depois de extraí-los, você pode concatená-los com:
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
Observe que esta forma de concatenação não funciona com todos os formatos de vídeo e pode ser necessário incluir outros argumentos, como -bsf:a aac_adtstoasc
para arquivos MP4. Mas isso deve render o vídeo que você deseja.