FFMPEG Divida o vídeo em durações aleatórias dentro do intervalo

FFMPEG Divida o vídeo em durações aleatórias dentro do intervalo

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 copypara -c copy.

informação relacionada