如何使用ffmpeg垂直滚动图像并同时检测图像结束(EOI)?

Roe*_*aar 3 video scroll ffmpeg image vertical-scrolling

我需要垂直滚动图像,从图像的顶部到图像的底部,然后在图像的最后一个底部滚动到屏幕顶部时停止创建输出视频。

Gya*_*yan 6

要在一个命令中执行此操作,请使用

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 过滤器填充克隆帧的时间戳间隙。

当图像输入完成时,覆盖被告知停止。