FFMPEG - Mesclar dois arquivos de áudio com tempo de sobreposição definido

FFMPEG - Mesclar dois arquivos de áudio com tempo de sobreposição definido

Requerimento

Gostaria de concatenar dois arquivos de áudio com tempo de sobreposição predefinido.

Por exemplo, se uma sobreposição de 10 segundos for definida, então os 10 segundos finais do primeiro áudio e os 10 segundos iniciais do segundo áudio serão sobrepostos na saída.

|<---- 1st mp3 file -------------------->                       |
|                        <-----------2nd mp3 file ------------->|

result:
|<-----------------------(overlap 10 sec )--------------------->|

Responder1

  1. Usarffprobepara obter duraçãodo primeiro arquivo mp3.

  2. Execute ffmpegusandoum atrasopara atrasar o áudio euma misturapara misturar os dois fluxos de áudio em um:

    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 exemplo, se 1.mp3tiver 30 segundos de duração e você quiser uma sobreposição de 10 segundos, use 20s|20s.

    • Isso pressupõe 2.mp3que seja estéreo.

    • Se você ffmpegfor anterior à versão 4.2, use milissegundos em vez de segundos em adelay, como em 20000|20000.

    • -map "[a]"diz ffmpegpara usar a saída de amix que é rotulada arbitrariamente [a]. Caso contrário, ocomportamento de seleção de fluxo padrãoserá usado. Se você concorda com isso e entende as implicações, sinta-se à vontade para omitir o rótulo e -map(como ...amix=inputs=2" output.mp3). Veja também-mapdocumentação.

informação relacionada