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

如何使用FFmpeg随时间调整视频饱和度?使用t参数未生效

解决FFmpeg视频饱和度随时间变化的问题

我来帮你搞定这个FFmpeg饱和度随时间变化的问题~你之前的命令无法正常工作,主要有两个原因:一是eq滤镜默认只会在初始化时计算一次参数值,不会随时间动态更新;二是参数的表达式写法没有正确触发动态计算逻辑。

正确的命令写法

直接修改你的命令,加上eval=frame参数并调整表达式的引号写法即可:

ffmpeg -i out.mp4 -vf "eq=brightness=0.1:saturation='0.5*t':eval=frame" -c:a copy output.mp4

关键参数解释

  • eval=frame:这是核心!默认eq滤镜的参数是eval=init,只会在滤镜启动时计算一次饱和度值。改成eval=frame后,FFmpeg会为每一帧重新计算表达式的值,实现随时间变化的效果。
  • '0.5*t':这里的t是FFmpeg滤镜内置的变量,代表当前帧对应的时间(单位:秒)。0.5*t意味着饱和度会从0开始,每秒线性增加0.5。用单引号把表达式括起来,是为了避免shell解析掉特殊字符。

扩展玩法

如果想要更灵活的饱和度变化,还可以调整表达式:

  • 从饱和度1线性增加到2,持续10秒:
    ffmpeg -i out.mp4 -vf "eq=brightness=0.1:saturation='1+0.1*t':eval=frame" -c:a copy output.mp4
    
  • 让饱和度周期性波动(比如5秒一个周期,在0.5到1.5之间波动):
    ffmpeg -i out.mp4 -vf "eq=brightness=0.1:saturation='1+0.5*sin(2*PI*t/5)':eval=frame" -c:a copy output.mp4
    

注意事项

确保你的FFmpeg版本是较新的(建议4.0以上),旧版本可能不支持eq滤镜的表达式参数和eval选项。如果版本太旧,直接升级FFmpeg即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:06