Quiero combinar varios archivos de audio con una imagen de fondo para crear un video. Sé que puedo agregar archivos de audio con un mapa como
-i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2
pero ¿cómo puedo agregar duraciones específicas de silencio entre las pistas de audio mientras tengo una sola imagen como fondo?
Respuesta1
Si entendí correctamente su pregunta, puede proporcionar varias entradas y concatenarlas:
ffmpeg \
-loop 1 -i image.jpg
-i audio1.wav \
-f lavfi -t 5 -i anullsrc \
-i audio2.wav \
-filter_complex "[1:a][2:a][3:a]concat=n=3:v=0:a=1[outa]" \
-map 0:v -c:v copy \
-map "[outa]" -c:a aac -b:a 192k \
-shortest \
out.mkv
Qué hace esto:
Esto utiliza una sola imagen como entrada n.° 0 (pero puede intercambiarla
-f lavfi -i testsrc
con su archivo de video real). Las entradas 1 y 3 son los dos archivos de audio que desea utilizar.La entrada n.° 2 es un filtro que genera cinco segundos de silencio.
Luego concatenas todas las transmisiones de audio con el
concat
filtro.Para agregar un tercer archivo de audio, por ejemplo, especificaría dos entradas de audio adicionales (silencio y su pista real), agregaría la etiqueta de entrada para el
concat
filtro (es decir,[4:a][5:a]
) y aumentarían=3
an=5
.El archivo de salida utiliza el vídeo de entrada tal cual (
-c:v copy
) y el audio se vuelve a codificar con AAC a 192 kbit/s. Es necesario volver a codificar la transmisión de audio ya que está aplicando un filtro.La
-shortest
opción garantiza que la codificación finalice cuando finalice la transmisión más corta (ya sea de vídeo o de audio).