Combine áudio e Gif em um vídeo preservando a transparência usando ffmpeg

Combine áudio e Gif em um vídeo preservando a transparência usando ffmpeg

Estou tentando combinar umarquivo de áudioe umgifdentro devídeoe estou enfrentando alguns problemas, apesar de tentar algumas soluções no Stack Overflow.

Gostaria que a duração combinada do arquivo correspondesse à do áudio, além de preservar a transparência do GIF.

  • A duração do arquivo de áudio é00:00:17,53
  • A duração do arquivo Gif é00:00:00,40, é transparente.

Consegui combiná-los, mas a duração que obtive está bastante errada e a transparência foi perdida com o seguinte comando:

ffmpeg -i input.mp3 -ignore_loop 0 \
-i input.gif -movflags +faststart \
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \
-shortest -strict -2 \
-c:v libx264 -c:a aac -b:a 192k -b:v 2M -pix_fmt yuv420p output.mp4

A duração do vídeo resultante é00:00:24,21

  1. Existe alguma maneira de acertar a duração da saída sem precisar usar -t 00:00:17.53a opção?
  2. Tentei converter usando outros codecs, como libvpx-vp9, mas não consegui acertar a transparência. Existe algum outro codec que devo usar?

Editar: consegui gerar um vídeo transparente (formato webm) usando o seguinte comando:

ffmpeg -i source.mp3 -ignore_loop 0 -i source.gif -c:v libvpx -pix_fmt yuva420p -auto-alt-ref 0 -t 00:00:17.53

No entanto, minha primeira pergunta sobre a duração não ser automaticamente correta ainda permanece.

informação relacionada