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
Usar
ffprobe
para obter duraçãodo primeiro arquivo mp3.Execute
ffmpeg
usandoum 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, se1.mp3
tiver 30 segundos de duração e você quiser uma sobreposição de 10 segundos, use20s|20s
.Isso pressupõe
2.mp3
que seja estéreo.Se você
ffmpeg
for anterior à versão 4.2, use milissegundos em vez de segundos em adelay, como em20000|20000
.-map "[a]"
dizffmpeg
para 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-map
documentação.