FFMPEG Divide el video en duraciones aleatorias dentro del rango

FFMPEG Divide el video en duraciones aleatorias dentro del rango

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

información relacionada