ffmpeg: объединить два или три аудио в один, уменьшив громкость другого

ffmpeg: объединить два или три аудио в один, уменьшив громкость другого

Хотите объединить несколько аудиофайлов, например:

1) один длинный аудиофайл, который будет использоваться в качестве фонового звука 2) несколько аудиофайлов, которые будут сменяться через определенные интервалы, например, каждые 10 секунд после первого

Таким образом, конечный требуемый вывод — аудио-1 длительностью 60 сек, аудио-2, начиная с 10 сек и до 20 сек, с громкостью аудио-1 0,1.

решение1

Для сценария, упомянутого в вопросе, используйте

ffmpeg -i audio1 -i audio2 -filter_complex \
        "[0]atrim=0:10[s1];
         [0]atrim=10:20,asetpts=N/SR/TB,volume=0.1[s2];
         [0]atrim=20,asetpts=N/SR/TB[s3];
         [1]atrim=duration=10,adelay=10000|10000[v2];
         [s1][s2][s3]concat=n=3:v=0:a=1[b];
         [b][v2]amix[a]"
       -map [a] mixed.mp3

Обычно вы захотите использоватьsidechaincompressфильтр для адаптивного уменьшения громкости музыкального потока путем анализа громкости звука переднего плана.

Связанный контент