Forçar a duração do vídeo de saída com legendas externas no ffmpeg

Forçar a duração do vídeo de saída com legendas externas no ffmpeg

Estou extraindo um fragmento de 1 minuto de um arquivo de vídeo começando 30 minutos desde o início e adicionando legendas de um arquivo externo usando o seguinte comando:

ffmpeg -ss 1800 -i input_video.m4v -ss 1800 -i input_subtitle.srt -map 1:0 -c:a aac -c:v libx264 -c:s mov_text -crf 35 -preset slow -t 60 -avoid_negative_ts 1 output_video.mp4

O problema que recebo é que o vídeo transcodificado tem duração 00:01:03.50em vez de esperado 00:01:00.00. E ao reproduzir esse vídeo com o VLC, a reprodução para antes que a barra de progresso chegue ao fim.

A duração passa a ser exatamente 1 minuto somente se eu remover a entrada da legenda. Parece que a duração do arquivo de saída foi estendida para caber na última frase da legenda que começa dentro do intervalo definido de 1 minuto.

Existe uma maneira de forçar a duração da saída exatamente para o valor definido no -dsinalizador?

Responder1

Devido à forma como o ffmpeg analisa os arquivos de legenda, existem duas opções disponíveis para você:

Saída para MP4, mas possivelmente pule uma legenda:

ffmpeg -i input_video.m4v -i input_subtitle.srt -ss 1800 -c:a aac -c:v libx264 -c:s mov_text -crf 35 -preset slow -t 60 output_video.mp4

Isso deve produzir um arquivo de 60 segundos, mas irá ignorar quaisquer legendas que comecem antes de 1800, mas que se estendam além dele.

Saída para MKV:

ffmpeg -i input_video.m4v -i input_subtitle.srt -ss 1800 -c:a aac -c:v libx264 -c:s ass -crf 35 -preset slow -t 60 output_video.mkv

Aqui, qualquer legenda começando antes de 1800 e estendendo-se além dele estará presente e terá duração proporcional, ou seja, se uma legenda começar em 1795 e terminar em 1802, ela durará 2 segundos na saída.

Método de 2 etapas

ffmpeg -i subfile -ss 1800 -t 60 sub.ass

e

ffmpeg -ss 1800 -i video.mp4 -i sub.ass -c:s mov_text out.mp4

Isso extrai os subs correspondentes ao segmento de vídeo desejado e depois é mixado com o vídeo.

informação relacionada