【问题标题】:Complex audio volume changes with ffmpeg复杂的音频音量随 ffmpeg 变化
【发布时间】:2016-06-30 01:48:29
【问题描述】:

使用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

这可以吗?我尝试过的组合(淡入淡出和音量,以及使用时间线编辑)到目前为止还没有成功。

这里是接近的东西:

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% 的点和淡出至全音量的点)存在故障 - 可听见的咔嗒声。

【问题讨论】:

  • 你试过什么命令?
  • @Mulvya,我添加了一个我一直在尝试的例子。这很接近,但还不能接受。
  • 淡入淡出过滤器从零开始或从零开始。您应该完全使用音量过滤器来完成。我会尽快提供答案。

标签: audio ffmpeg


【解决方案1】:

作为@Mulvya 的(很好的)答案的替代方法,这里有一种使用volume 过滤器的方法,它产生相同的输出:

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

【讨论】:

    【解决方案2】:

    我本来建议完全使用音量过滤器来完成,但只需稍加修改即可以当前方式完成。

    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
    

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

    【讨论】:

    • 是的,效果非常好。我想,即使afade 上有不同的曲线,也可以找到一个插入点使其看起来很平滑。但我必须承认,我很期待看到如何仅使用volume 过滤器来做到这一点!如果音量路径变得更复杂,我想知道是否可以通过这种方式进行更多控制。
    • 好的,举个例子。这就是音量淡出到 25% 的情况:volume=enable='between(t,7,8)':volume='1 - 0.75 * (t - 7)':eval=frame
    • 太棒了!我之前在链接volume 过滤器时遇到了麻烦,但我想通了。我将在上面写出您的解决方案,但使用volume。谢谢!
    猜你喜欢
    • 2021-11-25
    • 2021-10-26
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多