A conversão de um GIF em vídeo muda sua duração

4

Eu quero converter um arquivo gif em um vídeo com ffmpeg. Estou usando:

ffmpeg -y -i /gif/583fd7661b46d.gif -strict -2 -an -b:v 32M /gif/mp4/583fd7661b46d.avi

A duração do meu gif no photoshop é de 27 segundos, mas a duração do vídeo "583fd7661b46d.avi" gerado é de 15 segundos. Como posso obter a mesma duração do meu gif no vídeo gerado?

    
por Aminesrine 06.12.2016 / 10:14

2 respostas

3

Usando sua amostra, identifiquei o problema:

No seu GIF, o último quadro (vazio) tem uma duração de 10370ms . Parece ser ignorado por ffmpeg , produzindo a diferença.

Se eu alterar o formato de saída para .mp4 , a duração se tornará correta. A alteração do codificador não tem efeito.

Então, isso é um bug em ffmpeg . Isso pode ser devido a uma limitação do formato de saída, o que é muito improvável (o problema também está presente para .mkv ), mas, nesse caso, deve pelo menos imprimir um aviso. Analisando o rastreador de bugs , eu encontrei # 4235 (A conversão de GIF para MP4 usando o FFmpeg produz um vídeo que não segue os intervalos de quadros GIF.) - parece que isso foi corrigido para o formato .mp4 , mas não para outros.

    
por 06.12.2016 / 19:28
0

Basta aplicar o filtro de carimbo de data e hora de apresentação com um coeficiente igual à fração original time / achieved time no seu caso - 27/15 . Então você adiciona o filtro -filter:v "setpts=27/15*PTS" antes do nome do arquivo de saída.

Mais sobre mudanças de framerate na wiki do FFmpeg: link

    
por 06.12.2016 / 14:43