FFMPEG: fusiona dos archivos de audio con un tiempo de superposición definido

FFMPEG: fusiona dos archivos de audio con un tiempo de superposición definido

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

  1. Usarffprobepara obtener duracióndel primer archivo mp3.

  2. Ejecutar ffmpegusandoun 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, si 1.mp3dura 30 segundos y desea una superposición de 10 segundos, utilice 20s|20s.

    • Esto se supone 2.mp3que es estéreo.

    • Si ffmpeges anterior a la versión 4.2, utilice milisegundos en lugar de segundos en un retraso, como en 20000|20000.

    • -map "[a]"indica ffmpegque 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-mapdocumentación.

información relacionada