Mi intención es aplicar una superposición de imágenes con efecto de desvanecimiento en un momento específico del video, así como aplicar un audio de fondo al video con un solo comando. El vídeo también estará limitado a sólo 15 segundos.
Actualmente, puedo lograr esto a través de 2 comandos, lo que a cambio produciría 2 resultados. ¿Cómo puedo fusionar estos 2 comandos?
Primer comando
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" incomplete.mp4
Segundo comando
ffmpeg -i audio.mp3 -i incomplete.mp4 -shortest finalVideo.mp4
Este es mi intento de fusionar los dos comandos en uno solo, sin embargo, el video ya no está limitado a 15 segundos y el audio de fondo solo se aplica a unos pocos videos después de probarlo con varios videos mp4.
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -i audio.mp3 -shortest -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" finalVideo.mp4
Respuesta1
Usar
ffmpeg -ss 00:00:00 -t 00:00:15 -i video.mp4 -loop 1 -i image.png -i audio.mp3
-filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i];
[0][i]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:shortest=1[v]"
-map "[v]" -map 2:a -shortest incomplete.mp4
En ffmpeg, la ubicación de las opciones es importante. Cualquier opción antes de una entrada se aplica únicamente a esa entrada. En su intento de comando combinado, ingresa el audio después de las especificaciones de tiempo para que sean específicos solo de la entrada de audio.
FFmpeg utiliza un sistema de mapeo para decidir qué flujos incluir en la salida. Cuando no se establecen asignaciones de mapa explícitamente, la asignación predeterminada selecciona un audio de entre las entradas. Parece que algunos de tus MP4 tenían transmisiones de audio que tenían prioridad sobre el MP3. Con asignaciones explícitas, eso no sucederá.