我无法在具有淡入/淡出过渡的缩放和平移中设置视频持续时间



我是ffmpeg的新手。 我正在对图像进行带有淡入/淡出过渡的缩放和平移以制作视频 我使用了这个脚本,但这是针对 4 张图像的,我只想用于单个图像,所以我尝试了以下命令:

ffmpeg -y -loop 1 -i 1.jpg -filter_complex "
[0:v]setpts=PTS-STARTPTS,scale=w='if(gte(iw/ih,1280/720),-1,1280)':h='if(gte(iw/ih,1280/720),720,-1)',crop=1280:720,setsar=sar=1/1,format=rgba,split=2[stream1out1][stream1out2];
[stream1out1]trim=duration=1,select=lte(n,30),split=2[stream1in][stream1out];
[stream1out2]trim=duration=2,select=lte(n,60)[stream1];
[stream1in]fade=t=in:s=0:n=30[stream1fadein];
[stream1out]fade=t=out:s=0:n=30[stream1fadeout];
[stream1fadein][stream1][stream1fadeout]concat=n=3:v=1:a=0,scale=1280*5:-1,zoompan=z='min(pzoom+0.002,2)':d=1:x='iw/2-(iw/zoom/2)':s=1280x720 ,format=yuv420p[video]" -map [video] -vsync 2 -async 1 -rc-lookahead 0 -g 0 -profile:v main -level 42 -c:v libx264 -r 30 df.mp4   

它工作正常,但它生成 4 秒视频。所以我对如何在此命令中设置视频持续时间感到困惑。

该命令比需要的要复杂得多。

ffmpeg -y -i 1.jpg 
-vf "scale=w='if(gte(iw/ih,1280/720),-1,1280*5)':h='if(gte(iw/ih,1280/720),720*5,-1)',
crop=1280*5:720*5,setsar=1,
zoompan=z='min(zoom+0.002,2)':d=X:x='iw/2-(iw/zoom/2)':s=1280x720,
fade=in:s=0:n=25,fade=out:s=X-25:n=25,format=yuv420p" 
-c:v libx264 -profile:v main df.mp4

替换缩放平移中的X,并淡出所需的帧数。流 fps 为 25,因此持续时间为 X/25(以秒为单位(。

最新更新