You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg复杂滤镜(含Amix)设置4路输入的单独音量?

为FFmpeg 4路输入设置独立音量并混合(含amix与xstack)

要给4路输入分别设置独立音量后再用amix混合,核心是在音频进入amix前,为每一路单独添加volume滤镜调整音量。视频部分可保留你原有的xstack布局配置。

完整滤镜链示例

[0:a]volume=0.8[a0];
[1:a]volume=1.2[a1];
[2:a]volume=0.6[a2];
[3:a]volume=1.0[a3];
[a0][a1][a2][a3]amix=inputs=4:duration=longest[aout];
[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[vout]

各部分说明

  • 单路音量调整:[0:a]volume=0.8[a0] 表示对第1路输入的音频流设置音量为原音量的80%,输出标记为[a0]。你可以自行修改volume后的数值(大于1为音量增益,小于1为音量衰减),为4路输入分别配置不同参数。
  • 音频混合:[a0][a1][a2][a3]amix=inputs=4:duration=longest[aout] 将调整好音量的4路音频混合,duration=longest参数确保混合后的音频时长以最长的输入音频为准,避免被提前截断。
  • 视频拼接:视频部分的xstack配置和你原有的一致,将4路视频按2×2的布局拼接,输出标记为[vout]。

完整FFmpeg命令示例

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 \
-filter_complex "[0:a]volume=0.8[a0];[1:a]volume=1.2[a1];[2:a]volume=0.6[a2];[3:a]volume=1.0[a3];[a0][a1][a2][a3]amix=inputs=4:duration=longest[aout];[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[vout]" \
-map "[vout]" -map "[aout]" -c:v libx264 -c:a aac output.mp4

注意事项

  • 如果输入音频的格式、采样率或声道布局不一致,建议在volume滤镜后添加aformat=sample_fmts=s16:sample_rates=44100:channel_layouts=stereo统一参数,避免amix报错。
  • 若需要动态音量控制(比如随时间调整音量),可以使用表达式语法,例如volume=volume='if(gte(t,10),0.5,1.0)'表示前10秒保持原音量,10秒后降至50%。

内容的提问来源于stack exchange,提问作者James Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:27:31