Segmentando vídeo em partes de X segundos com ffmpeg

Segmentando vídeo em partes de X segundos com ffmpeg

Tenho um vídeo com duração de um minuto e 35 segundos. Consigo dividi-lo em vários segmentos de 30 segundos (estou totalmente ciente de outras maneiras de dividir um vídeo, mas escolhi isso por um motivo específico). No entanto, isso produz 3 vídeos de 30 segundos de duração e um vídeo de 5 segundos de duração. Qual seria a melhor maneira de eliminar um vídeo desordenado com menos de 15 segundos e anexar segmentos?

dividir em segmentos

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

duração

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

Responder1

O ffmpeg por si só não pode fazer isso. Você mesmo precisa descobrir a duração do segmento individual, pois não há como especificar uma duração mínima.

Para isso, você provavelmente repetiria a duração total do vídeo duas vezes. Na primeira execução, determine o comprimento dos segmentos. Se você achar que o último segmento é menor que, digamos, 15 segundos, basta ajustar a duração do segundo ao último. Isso pode ser feito facilmente com linguagens de script.

Depois de ter isso, você precisa dizer aosegmentmisturadoras durações dos segmentos individuais:

-segment_times 0,30,60,80

informação relacionada