Audio ffmpeg可改变复杂的音频音量

Audio ffmpeg可改变复杂的音频音量,audio,ffmpeg,Audio,Ffmpeg,使用ffmpeg,我们可以对音频级别进行多少控制?例如,我想在程序的时间线上绘制一个“M”形: t0 - t1 : fade in from 0 to 1 t1 - t2 : play at full volume t2 - t3 : fade out to 25% t3 - t4 : play at 25% volume t4 - t5 : fade in (from 25%) to full volume t5 - t6 : play at full volume t6 - t7 : fad

使用
ffmpeg
,我们可以对音频级别进行多少控制?例如,我想在程序的时间线上绘制一个“M”形:

t0 - t1 : fade in from 0 to 1
t1 - t2 : play at full volume
t2 - t3 : fade out to 25%
t3 - t4 : play at 25% volume
t4 - t5 : fade in (from 25%) to full volume
t5 - t6 : play at full volume
t6 - t7 : fade out from 1 to 0
这能做到吗?我尝试过的组合(afade和volume,以及使用时间轴编辑)到目前为止还没有成功

这里有一点很接近:

ina="infile.caf"
out="outfile.mp3"

time ffmpeg -i $ina -af \
"afade=enable='between(t,0,3)':t=in:ss=0:d=3, \
afade=enable='between(t,7,8)':t=out:st=7:d=1, \
volume=enable='between(t,8,12)':volume=.25:eval=frame, \
afade=enable='between(t,12,13)':t=in:st=12:d=1, \
afade=enable='between(t,15,18)':t=out:st=15:d=3" \
$out

。。但在两个中间点(即音量衰减到25%的点和音量恢复到全音量的点)存在小故障-可听见的咔哒声。

我打算建议完全使用音量过滤器,但可以按照当前方式进行,只需稍加修改

ffmpeg -i $ina -af \
"afade=enable='between(t,0,3)':t=in:ss=0:d=3, \
afade=enable='between(t,7,8)':t=out:st=7:d=1.333, \
volume=enable='between(t,8,12)':volume=.25:eval=frame, \
afade=enable='between(t,12,13)':t=in:st=11.6667:d=1.333, \
afade=enable='between(t,15,18)':t=out:st=15:d=3" \
$out

淡入淡出过滤器归零或从零开始,因此技巧是设置淡入淡出开始时间、持续时间和启用范围,以便范围开始和结束时间的音量达到所需的水平。默认曲线是线性的,因此计算应该很简单。

作为@Mulvya(伟大)答案的替代方法,这里有一种使用
体积
过滤器产生相同输出的方法:

infile="infile.caf"
outfile="outfile.mp3"

ffmpeg -i $ina -af \
"volume=enable='between(t,0,3)':volume='t / 3.0':eval=frame, \
volume=enable='between(t,3,7)':volume='1':eval=frame, \
volume=enable='between(t,7,8)':volume='1 - 0.75 * (t - 7)':eval=frame, \
volume=enable='between(t,8,12)':volume='0.25':eval=frame, \
volume=enable='between(t,12,13)':volume='.25 + 0.75 * (t - 12)':eval=frame, \
volume=enable='between(t,13,15)':volume='1':eval=frame, \
volume=enable='between(t,15,18)':volume='1 - (t - 15) / 3.0':eval=frame" \
$out

你尝试过什么命令?@Mulvya,我添加了一个我尝试过的例子。这很接近,但还不可接受。淡入淡出滤镜归零或从零开始。您应该完全使用卷过滤器来完成此操作。我很快会给出答案。是的,效果非常好。我想,即使在
afade
上有不同的曲线,也可以找到一个插入点使其看起来平滑。但我必须承认,我一直期待着看到如何只用
过滤器就可以做到这一点!如果卷路径变得更复杂,我想知道是否可以通过这种方式进行更多的控制。好的,举个例子。这就是音量衰减到25%的效果:
volume=enable='between(t,7,8)':volume='1-0.75*(t-7)':eval=frame
!我以前在链接
过滤器时遇到问题,但我找到了答案。我将用
volume
写出上面的解决方案。谢谢