Combine audio y gif en un video mientras conserva la transparencia usando ffmpeg

Combine audio y gif en un video mientras conserva la transparencia usando ffmpeg

Estoy tratando de combinar unarchivo de audioy ungifen unvideoy tengo algunos problemas a pesar de probar bastantes soluciones con Stack Overflow.

Me gustaría que la duración combinada del archivo coincida con la del audio, así como preservar la transparencia del GIF.

  • La duración del archivo de audio es00:00:17.53
  • La duración del archivo GIF es00:00:00.40, es transparente.

Logré combinarlos pero la duración que obtengo es bastante incorrecta y se pierde la transparencia con el siguiente 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

La duración del vídeo resultante es00:00:24.21

  1. ¿Existe alguna forma de conseguir la duración de salida correcta sin tener que utilizar -t 00:00:17.53la opción?
  2. Intenté convertir usando otros códecs como libvpx-vp9 pero no pude lograr la transparencia correcta. ¿Hay algún otro códec que deba usar?

Editar: Logré generar un video transparente (formato webm) usando el siguiente 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

Sin embargo, mi primera pregunta acerca de que la duración no es automáticamente correcta sigue en pie.

información relacionada