Quero dividir um vídeo em partes, mas não em partes iguais.
Quero que cada clipe tenha entre 15 e 50 segundos. Mas quero que a duração de cada clipe seja aleatória (dentro do intervalo de 15 a 50 segundos).
Como eu faria isso com o ffmpeg na linha de comando?
Este é o comando que eu estava usando para dividir um vídeo em partes iguais
ffmpeg -i lutherceleb.mp4 -acodec copy -f segment -vcodec copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4
Responder1
Isso é um pouco complicado, mas você pode usar qualquer linguagem de script (por exemplo, Ruby) para gerar uma lista aleatória de tempos parciais. Basta alterar a duração total (150 aqui) e atribuir a saída desse script à opção-segment_times
$ times=$(ruby -e 's=[]; d=0; while d < 150 do t=rand(15..50); s << (d+t); d=d+t end; puts s.join(",")')
$ echo $times
15,53,96,124,168
$ ffmpeg -i lutherceleb.mp4 -f segment -segment_times $times -c copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4
Você pode encurtar -acodec copy -vcodec copy
para -c copy
.