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

FFmpeg制作带淡入居中图片的5秒视频遇问题:淡入时图片不显示

解决FFmpeg添加fade滤镜后图片不显示的问题

看起来你碰到的问题很典型——加了fade滤镜后图片直接消失,去掉滤镜就正常,核心原因是fade滤镜的参数写法和默认帧率不匹配,导致淡入逻辑没有按预期工作。

问题根源

你当前用的fade=in:0:30是旧的帧数参数写法:fade=in:起始帧:持续帧数。但FFmpeg的lavfi color源默认帧率是25fps,30帧的持续时间是1.2秒,更关键的是,这种旧写法在和scale2ref这类尺寸调整滤镜结合时,容易出现帧处理顺序的冲突,导致淡入完成后图片没有正确保持显示状态(看起来就是全程不显示)。

两种解决方案

方案1:用时间参数指定淡入(推荐,不受帧率影响)

改用fade滤镜的现代语法,用时间而非帧数来定义淡入,这样不管视频帧率是多少,效果都稳定。把fade=in:0:30替换成fade=t=in:st=0:d=1,其中d=1表示淡入持续1秒(你可以改成0.5、2这类数值调整速度)。

完整命令:

ffmpeg -f lavfi -i color=c=black:s=640x360:d=5 -i logo.png -filter_complex "[1:v]fade=t=in:st=0:d=1[a];[a][0:v]scale2ref=oh*mdar:ih/2[2nd][ref];[ref][2nd]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output5.mp4

方案2:明确指定视频帧率,匹配帧数参数

如果你习惯用帧数控制,给color滤镜加上r=30参数(强制30fps),这样30帧刚好对应1秒的淡入时长,避免帧率不匹配的问题:

ffmpeg -f lavfi -i color=c=black:s=640x360:d=5:r=30 -i logo.png -filter_complex "[1:v]fade=in:0:30[a];[a][0:v]scale2ref=oh*mdar:ih/2[2nd][ref];[ref][2nd]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output5.mp4

为什么这样有效?

  • 时间参数写法fade=t=in:st=0:d=X是FFmpeg推荐的现代用法,它会自动根据视频帧率换算成对应帧数,避免了手动计算帧数的误差,也不会和后续的尺寸调整滤镜冲突。
  • 强制指定帧率后,你的帧数参数30就能准确对应1秒的淡入时长,淡入完成后图片会保持正常显示状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:05:07