Quiero dividir un video en partes, pero no en partes iguales.
Quiero que cada clip dure entre 15 y 50 segundos. Pero quiero que la duración de cada clip sea aleatoria (dentro de ese rango de 15 a 50 segundos).
¿Cómo haría esto con ffmpeg en la línea de comando?
Este es el comando que estaba usando para dividir un video en partes iguales.
ffmpeg -i lutherceleb.mp4 -acodec copy -f segment -vcodec copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4
Respuesta1
Esto es un poco complicado, pero puedes usar cualquier lenguaje de programación (por ejemplo, Ruby) para generar una lista aleatoria de tiempos parciales. Simplemente cambie la duración total (150 aquí) y luego asigne la salida de ese script a la opción-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
Puedes acortarlo -acodec copy -vcodec copy
a -c copy
.