Segmentação de vídeo para partes de X segundos com ffmpeg

1

Eu tenho um vídeo com duração de um minuto e 35 segundos. Consigo dividi-lo em vários segmentos de 30 segundos (estou ciente de outras maneiras de dividir um vídeo, mas escolhi isso por um motivo específico). No entanto, isso gera 3 vídeos, 30 segundos de duração e um vídeo com 5 segundos de duração. Qual seria a melhor maneira de eliminar um vídeo disperso com menos de 15 segundos e acrescentar 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 '.=.'
    
por MaryCoding 04.05.2015 / 01:30

1 resposta

1

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

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

Depois disso, você precisa informar às segment muxer as durações individuais dos segmentos:

-segment_times 0,30,60,80
    
por 04.05.2015 / 14:53