¿Cómo puedo agregar duraciones específicas de silencio entre pistas con ffmpeg?

¿Cómo puedo agregar duraciones específicas de silencio entre pistas con ffmpeg?

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 testsrccon 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 concatfiltro.

  • 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 concatfiltro (es decir, [4:a][5:a]) y aumentaría n=3a n=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 -shortestopción garantiza que la codificación finalice cuando finalice la transmisión más corta (ya sea de vídeo o de audio).

información relacionada