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

如何用FFmpeg volume滤镜实现指定时段静音及周期性重复静音?

问题1:用FFmpeg的volume滤镜实现10秒后静音2秒的效果

很简单,直接借助volume滤镜的enable参数指定静音的时间区间就行,看这条命令:

ffmpeg -i input.mp4 -af "volume=enable='between(t,10,12)':volume=0" -c:v copy -c:a aac -b:a 192K output.mp4
  • between(t,10,12):当视频播放到10秒到12秒之间时,触发这个音量规则
  • volume=0:触发时直接把音量拉到0,实现静音
  • -c:v copy:视频流直接复制,不用重新编码,省时间还不损失画质

要是你想10秒之后一直静音到视频结束,把结束时间设成一个足够大的数就行,比如between(t,10,9999)。


问题2:实现周期性循环静音,避免重复编写volume滤镜

你提到的zoompan用mod函数实现周期效果的思路完全可以套用到volume滤镜上!核心就是用mod计算当前时间在周期内的位置,然后判断是否需要静音。

先看你原来的需求:从10秒开始,每10秒静音5秒(10-15、20-25...),用周期写法就是:

ffmpeg -i input.mp4 -af "volume=enable='and(gte(t,10), between(mod(t-10,10),0,5))':volume=0" -c:v copy -c:a aac -b:a 192K output.mp4

如果是想改成每10秒里静音2秒(比如每个周期的最后2秒),调整一下区间就行:

ffmpeg -i input.mp4 -af "volume=enable='and(gte(t,10), between(mod(t-10,10),8,10))':volume=0" -c:v copy -c:a aac -b:a 192K output.mp4

拆解关键逻辑:

  • gte(t,10):先确保只有10秒之后才开始应用周期规则,之前的内容正常播放
  • mod(t-10,10):把时间轴往前偏移10秒,再对10取模,这样10秒后的时间会被映射到0-10的周期里(比如12秒对应2,15秒对应5,22秒对应2,循环往复)
  • between(mod(...), x, y):定义每个周期内的静音时间段,比如between(...,0,5)就是每个周期的前5秒静音,完美对应你原来的重复区间

这样一条滤镜规则就搞定了,不用反复复制粘贴多个volume,还能随时调整周期长度、静音时长和开始时间,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:47:31