[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
[编辑]
如果您说您已使用您提供的网址阅读了 Gyan 的答案,那么我不明白为什么我仍然必须告诉您有关 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.43seconds。
这是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 的参数,正如 Paul B. Mahol 所说:
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-filter btw:
[/edit]