Segmentación de video en partes de X segundos con ffmpeg

Segmentación de video en partes de X segundos con ffmpeg

Tengo un video con una duración de un minuto y 35 segundos. Puedo dividirlo en varios segmentos de 30 segundos (conozco perfectamente otras formas de dividir un vídeo, pero elegí esta por una razón particular). Sin embargo, esto produce 3 vídeos de 30 segundos de duración y un vídeo de 5 segundos de duración. ¿Cuál sería la mejor manera de eliminar un video rezagado que dura menos de 15 segundos y agregarlo a segmentos?

dividir en segmentos

ffmpeg -i test.mp4 -codec:v copy -codec:a copy -segment_time 30 test-%03d.mp4

duración

ffprobe -i test.mp4 -show_format -v quiet | grep '.=.'

Respuesta1

ffmpeg por sí solo no puede hacer eso. Debe determinar usted mismo la duración del segmento individual, ya que no hay forma de especificar una duración mínima.

Para esto, probablemente repetirías la duración total del video dos veces. En la primera ejecución, determine la longitud de los segmentos. Si encuentra que el último segmento es más corto que, digamos, 15 segundos, simplemente tiene que ajustar la duración del penúltimo. Esto se puede hacer fácilmente con lenguajes de secuencias de comandos.

Una vez que tengas eso, debes decirle alsegmentmuxerlas duraciones de los segmentos individuales:

-segment_times 0,30,60,80

información relacionada