Usando o ffmpeg, como posso converter um MP4, cortar e redimensionar para GIF?

0

Eu gostaria que o ffmpeg pegasse um arquivo de vídeo MP4 de 1280x720, cortasse para proporção de tamanho quadrado, redimensionasse para 640x640

Os dois comandos a seguir funcionam para mim com grande qualidade GIF, mas faltam apenas o redimensionamento correto. Isso me dá uma saída GIF, mas o tamanho é 1138x640 em vez de 640x640.

Gerando uma paleta:

ffmpeg -y -ss 30 -t 3 -i input.mp4 \
-vf fps=10,scale=1138:-1:flags=lanczos,palettegen palette.png

Gerando GIF usando a paleta:

ffmpeg -ss 30 -t 3 -i input.mp4 -i palette.png -filter_complex \
"fps=10,scale=1138:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

Isso me dá um 1138x640.gif, mas como posso obtê-lo para ser 640x640 sem depender de outro comando separado?

    
por Joel Z. 03.02.2018 / 20:44

1 resposta

1

Aqui está um método simples que funcionará para entradas de 1280x720.

Gerar paleta:

ffmpeg -i input.mp4 -filter_complex "fps=10,scale=-1:640,crop=ih:ih,setsar=1,palettegen" palette.png

Criar GIF:

ffmpeg -i input.mp4 -i palette.png -filter_complex "[0]fps=10,scale=-1:640,crop=ih:ih,setsar=1[x];[x][1:v]paletteuse" output.gif

Você pode tornar isso mais complexo, se desejado, adicionando a adição da opção force_aspect_ratio scale para ajustar os tamanhos de entrada arbitrários em 640x640 , e por adicionando split e fifo para evitar tornar o arquivo de paleta temporário.

    
por 04.02.2018 / 02:39

Tags