Con FFmpeg, estoy tratando de combinar muchos archivos de audio en uno largo, con un fundido cruzado entre cada uno de ellos. Para mantener los números simples, digamos que tengo 10 archivos de entrada, cada 5 minutos, y quiero un fundido cruzado de 10 segundos entre cada uno. (La duración resultante sería 48:30.) Suponga que todos los archivos de entrada tienen el mismo códec / velocidad de bits.
Me sorprendió gratamente descubrir lo simple que era fundir dos archivos:
ffmpeg -i 0.mp3 -i 1.mp3 -vn -filter_complex acrossfade=d=10:c1=tri:c2=tri out.mp3
Pero el acrossfade
filtro no permite más de 3 entradas. Entonces, mi solución ingenua es ejecutar repetidamente ffmpeg
, fundiendo la salida intermedia anterior con el siguiente archivo de entrada. No es ideal Me lleva a dos preguntas:
1. ¿ acrossfade
Copia sin pérdidas las transmisiones? (Excepto donde están activamente fundiéndose, por supuesto). ¿ O se vuelven a codificar todos los flujos de entrada?
Si las secuencias de entrada se vuelven a codificar por completo, entonces mi enfoque ingenuo es muy malo. En el ejemplo anterior (llamando acrossfade
9 veces), ¡las primeras 4:50 del primer archivo se volverían a codificar 9 veces! Si estoy combinando 50 archivos, ¡el primer archivo se vuelve a codificar 49 veces!
2. Para evitar múltiples ejecuciones y el problema de la recodificación, ¿puedo lograr el comportamiento de fundido múltiple en una sola ffmpeg
llamada?
Me imagino que necesitaría un filtro gráfico largo, pero aún no lo he descubierto. ¿Alguien tiene un ejemplo de fundido cruzado con solo 3 archivos de entrada? A partir de eso, pude automatizar los gráficos de filtro para cadenas más largas.
Gracias por cualquier consejo!
fuente