[a:0]volume=0[videoAudio]; \
Если вы заглушаете саундтрек к видео, почему бы не оставить его в покое?
[1]adelay=500[ad1]; \
Если ваши mp3-файлы стереофонические, вы должны указать задержку для обоих каналов.
duration=first
Задерживая ваши входы,audio3.mp3
автоматически станет самым длинным:
[ delay 500ms ]<audio1.mp3>|
[ | delay 5400ms ]<audio2.mp3>
[ | delay 10000ms ]<audio3.mp3>
Вертикальная линия (сразу после audio1.mp3
) помечает конец потока как duration=first
. В этом случае вам действительно нужно значение по умолчанию duration=longest
!
dropout_transition=0
Я предлагаю установить эту опцию на общую длину вашего микса, после чего следуетvolume
фильтр установлен на количество входов, чтобы восстановить громкость.
Чтобы узнать общую длину вашего микса:
ffmpeg \
-i "audio1.mp3" \
-i "audio2.mp3" \
-i "audio3.mp3" \
-lavfi "
[0]adelay=500|500[ad1];
[1]adelay=5400|5400[ad2];
[2]adelay=10000|10000[ad3];
[ad1][ad2][ad3]amix=inputs=3
" \
-f null -
Допустим, это возвращает, например, time=00:01:30.74
,Тогда последняя команда будет выглядеть следующим образом:
ffmpeg \
-i "audio1.mp3" \
-i "audio2.mp3" \
-i "audio3.mp3" \
-lavfi "
[0]adelay=500|500[ad1];
[1]adelay=5400|5400[ad2];
[2]adelay=10000|10000[ad3];
[ad1][ad2][ad3]amix=inputs=3:dropout_transition=90.74,volume=3,dynaudnorm
" \
output.mp3
[править]
Если вы скажете, что прочитали ответ Гаяна с указанным вами URL, тогда я не понимаю, почемуЯ все еще должен был рассказать вам о duration=first
и dropout_transition=0
. Позвольте мне показать вам значение dropout_transition
.
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "[1]adelay=11233[ad2];[2]adelay=20141[ad3];[0][ad2][ad3]amix=inputs=3" \
-f null -
[...]
size=N/A time=00:00:33.43 bitrate=N/A speed= 134x
Я проверил 3 образца. Общая длительность звукового микса составляет 33.43
секунды.
Вот так будет выглядеть сигнал с dropout_transition=0
:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=0,
volume=3,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=0,vol=3,wavespic.png"
Так же, как сигнал вваш оригинальный пост;конец становится очень громким. Так что это не имеет ничего общего с dynaudnorm
.
С dropout_transition
, установленным на общую длину аудио микса (и не забывайте volume=3
), именно так должна выглядеть форма волны:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=33.43,
volume=3,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=33.43,vol=3,wavespic.png"
Затем вы должны поиграть с dynaudnorm
его параметрами, как упомянул Пол Б. Махол:
ffmpeg \
-i "input1.mp3" -i "input2.mp3" -i "input3.mp3" \
-lavfi "
[1]adelay=11233[ad2];[2]adelay=20141[ad3];
[0][ad2][ad3]amix=inputs=3:dropout_transition=33.43,
volume=3,dynaudnorm=f=200:g=15,showwavespic=s=639x128
" \
"ffmpeg_amix=dt=33.43,vol=3,dynaudnorm=f=200-g=15,wavespic.png"
Я больше фанат фильтра acompressor
:
[/ edit]