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


1

Eu gostaria que o ffmpeg pegasse um arquivo de vídeo MP4 de 1280x720, reduzisse para a taxa de tamanho de 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

Saída de 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?

Respostas:


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 por adicionando o force_aspect_ratio opção de escala para ajustar tamanhos de entrada arbitrários em 640x640 e adicionando split e fifo para evitar criar o arquivo de paleta temporário.


Muito obrigado pela sua resposta. Eu aceitei sua resposta, mas para um corte mais preciso, como eu iria mudar o local de corte? Digamos que se eu quisesse cortar o vídeo 20px da esquerda e 10px da parte superior.
Joel Z.

crop=ih:ih:20:10
Gyan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.