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

FFmpeg叠加图片出现黑块:添加fade-in失效问题求助

问题原因

你遇到的黑块问题,核心是单帧图片的时间轴与主视频不匹配。图片作为输入是单帧媒体,自身时间轴仅包含极短的1帧时长,当你给它添加fade=t=in:st=2.6:d=1滤镜时,这个滤镜是基于图片自身的时间轴计算的——但图片在自身时间轴的2.6秒处早已没有有效帧,滤镜处理后输出的就是黑帧,叠加后自然显示黑块。

解决方案

有两种简单的修复方式,推荐第二种更简洁的方案:

方案1:先扩展图片时长再添加淡入

先通过loop+tpad将图片拉伸到覆盖你需要的叠加时长,再应用fade滤镜,让图片的时间轴与主视频对齐:

-y
-i "G:\...\Videos\BLANK.mp4" 
-i "G:\...\Front\1.jpg" 
-i "G:\...\Front\2.jpg" 
-i "G:\...\Front\3.jpg" 
-i "G:\...\Front\4.jpg" 
-i "G:\...\Front\5.jpg" 
-i "G:\...\Front\6.jpg" 

-filter_complex [1:v]scale=880:545:force_original_aspect_ratio=decrease,loop=loop=-1:size=1,setpts=N/FRAME_RATE/TB,tpad=stop_mode=clone:stop_duration=4,fade=t=in:st=2.6:d=1[img0];
[0:v][img0]overlay=x='if(lte(2.6-t,0),450,NAN)':y='if(lte(2.6-t,0),5,NAN)':enable='between(t,2.6,4)'[v0];
[2:v]scale=880:545:force_original_aspect_ratio=decrease[img1];
[v0][img1]overlay=x='if(lte(4-t,0),450,NAN)':y='if(lte(4-t,0),5,NAN)':enable='between(t,4,5.6)'[v1];
[3:v]scale=880:545:force_original_aspect_ratio=decrease[img2];
[v1][img2]overlay=x='if(lte(5.6-t,0),450,NAN)':y='if(lte(5.6-t,0),5,NAN)':enable='between(t,5.6,6.3)'[v2];
[4:v]scale=880:545:force_original_aspect_ratio=decrease[img3];
[v2][img3]overlay=x='if(lte(6.3-t,0),450,NAN)':y='if(lte(6.3-t,0),5,NAN)':enable='between(t,6.3,6.9)'[v3];
[5:v]scale=880:545:force_original_aspect_ratio=decrease[img4];
[v3][img4]overlay=x='if(lte(6.9-t,0),450,NAN)':y='if(lte(6.9-t,0),5,NAN)':enable='between(t,6.9,7.4)'[v4];
[6:v]scale=880:545:force_original_aspect_ratio=decrease[img5];
[v4][img5]overlay=x='if(lte(7.4-t,0),450,NAN)':y='if(lte(7.4-t,0),5,NAN)':enable='between(t,7.4,7.9)'[v5];

 -map [v5] -map 0:a -c:v libx264 -c:a copy "G:\...\Videos\ffmpeg\output.mp4"
  • loop=loop=-1:size=1:让单帧图片无限循环
  • setpts=N/FRAME_RATE/TB:修正时间戳,让循环的图片流时间轴与主视频同步
  • tpad=stop_mode=clone:stop_duration=4:将图片流时长固定为4秒(覆盖到第一个overlay的结束时间)

方案2:在overlay滤镜中直接实现淡入(推荐)

不需要给图片单独加fade滤镜,直接在overlay的alpha参数中用表达式实现淡入逻辑,完全避开时间轴不匹配的问题:

-y
-i "G:\...\Videos\BLANK.mp4" 
-i "G:\...\Front\1.jpg" 
-i "G:\...\Front\2.jpg" 
-i "G:\...\Front\3.jpg" 
-i "G:\...\Front\4.jpg" 
-i "G:\...\Front\5.jpg" 
-i "G:\...\Front\6.jpg" 

-filter_complex [1:v]scale=880:545:force_original_aspect_ratio=decrease[img0];
[0:v][img0]overlay=x='if(lte(2.6-t,0),450,NAN)':y='if(lte(2.6-t,0),5,NAN)':enable='between(t,2.6,4)':alpha='if(lt(t,2.6),0,min(1,(t-2.6)/1))'[v0];
[2:v]scale=880:545:force_original_aspect_ratio=decrease[img1];
[v0][img1]overlay=x='if(lte(4-t,0),450,NAN)':y='if(lte(4-t,0),5,NAN)':enable='between(t,4,5.6)'[v1];
[3:v]scale=880:545:force_original_aspect_ratio=decrease[img2];
[v1][img2]overlay=x='if(lte(5.6-t,0),450,NAN)':y='if(lte(5.6-t,0),5,NAN)':enable='between(t,5.6,6.3)'[v2];
[4:v]scale=880:545:force_original_aspect_ratio=decrease[img3];
[v2][img3]overlay=x='if(lte(6.3-t,0),450,NAN)':y='if(lte(6.3-t,0),5,NAN)':enable='between(t,6.3,6.9)'[v3];
[5:v]scale=880:545:force_original_aspect_ratio=decrease[img4];
[v3][img4]overlay=x='if(lte(6.9-t,0),450,NAN)':y='if(lte(6.9-t,0),5,NAN)':enable='between(t,6.9,7.4)'[v4];
[6:v]scale=880:545:force_original_aspect_ratio=decrease[img5];
[v4][img5]overlay=x='if(lte(7.4-t,0),450,NAN)':y='if(lte(7.4-t,0),5,NAN)':enable='between(t,7.4,7.9)'[v5];

 -map [v5] -map 0:a -c:v libx264 -c:a copy "G:\...\Videos\ffmpeg\output.mp4"
  • alpha='if(lt(t,2.6),0,min(1,(t-2.6)/1))':
    • 当主视频时间t<2.6时,图片完全透明(alpha=0)
    • 当t在2.6到3.6秒之间时,alpha从0线性增加到1,实现1秒的淡入效果
    • 3.6秒之后到4秒结束,alpha保持1(完全不透明)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:50:18