Requisito
Me gustaría combinar dos archivos de audio con un tiempo de superposición predefinido.
Por ejemplo, si se define una superposición de 10 segundos, los 10 segundos finales del primer audio y los 10 segundos iniciales del segundo audio se superponen en la salida.
|<---- 1st mp3 file --------------------> |
| <-----------2nd mp3 file ------------->|
result:
|<-----------------------(overlap 10 sec )--------------------->|
Respuesta1
Usar
ffprobe
para obtener duracióndel primer archivo mp3.Ejecutar
ffmpeg
usandoun retrasopara retrasar el audio yuna mezclapara mezclar las dos transmisiones de audio en una:ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[1]adelay=Ns|Ns[a1];[0:a][a1]amix=inputs=2[a]" -map "[a]" output.mp3
Ns
=1.mp3 duration
-overlap duration
. Por ejemplo, si1.mp3
dura 30 segundos y desea una superposición de 10 segundos, utilice20s|20s
.Esto se supone
2.mp3
que es estéreo.Si
ffmpeg
es anterior a la versión 4.2, utilice milisegundos en lugar de segundos en un retraso, como en20000|20000
.-map "[a]"
indicaffmpeg
que se utilice la salida de amix que está etiquetada arbitrariamente[a]
. De lo contrario, elcomportamiento de selección de flujo predeterminadose utilizará. Si está de acuerdo con eso y comprende las implicaciones, no dude en omitir la etiqueta y-map
(como...amix=inputs=2" output.mp3
). Ver también-map
documentación.