我需要垂直滚动图像,从图像顶部到图像底部,然后在图像的最后一个底部位从屏幕顶部滚动时停止创建输出视频。
最佳答案
要在一个命令中执行此操作,请使用ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -t 0.08 -i "input.png" -filter_complex "[1:v]scale=1920:-2,setpts=if(eq(N,0),0,1+1/0.02/TB),fps=25[fg]; [0:v][fg]overlay=y=-'t*h*0.02':eof_action=endall[v]" -map "[v]" output.mp4
请注意,在某些 shell(例如 Bash )中,逗号需要转义:ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -t 0.08 -i "input.png" -filter_complex "[1:v]scale=1920:-2,setpts=if(eq(N\,0)\,0\,1+1/0.02/TB),fps=25[fg]; [0:v][fg]overlay=y=-'t*h*0.02':eof_action=endall[v]" -map "[v]" output.mp4
-t
为图像添加,以便我们有一个 2 帧的流。 (25 fps x 0.08 = 2
)。 setpts 将第二帧的时间戳设置为滚动速率的倒数,它代表高度的一小部分。 fps 过滤器使用克隆帧填充时间戳间隙。
当图像输入完成时,覆盖被告知停止。
关于image - 如何使用ffmpeg垂直滚动图像并同时检测图像结束(EOI)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288245/