使用ffmpeg构建具有滑动过渡的图像幻灯片的问题

时间:2016-06-23 12:08:32

标签: video ffmpeg filtering overlay slideshow

我尝试使用ffmpeg和以下命令创建带幻灯片切换的图片幻灯片:

ffmpeg -loop 1 -i img1.jpg -loop 1 -i img2.jpg -loop 1 -i img3.jpg ^
-filter_complex ^
"nullsrc=size=800x600[v0]; ^
[0:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS[v1]; ^
[1:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS[v2]; ^
[2:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS[v3]; ^
[v0][v1]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv0]; ^
[v1][v2]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv1]; ^
[v2][v3]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv2]; ^
[vv0][vv1][vv2]concat=n=3:v=1:a=0 [video]" -map "[video]" output.mp4

我希望每张图片从左侧滑入0.5秒并再保持4.5秒,然后再与下一张图像重叠,依此类推。

第一个问题是,只用3张图片制作视频需要2-3分钟,我想添加更多图像,这将导致极长的构建时间。

第二个问题是视频应该是15秒长,但它只有8,因为第一个图像显示5秒,第二个显示为2,最后一个显示1秒。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在滤波器复合体内生成的输入焊盘只能使用一次。因此,您应该拆分那些将被重用的流。

ffmpeg -loop 1 -i img1.jpg -loop 1 -i img2.jpg -loop 1 -i img3.jpg ^
-filter_complex ^
"nullsrc=size=800x600[v0]; ^
[0:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS,split[v1a][v1b]; ^
[1:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS,split[v2a][v2b]; ^
[2:v]trim=duration=5,scale=800x600,setpts=PTS-STARTPTS[v3]; ^
[v0][v1a]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv0]; ^
[v1b][v2a]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv1]; ^
[v2b][v3]overlay=x='min(-w+(t*w/0.5)\,0)':shortest=1[vv2]; ^
[vv0][vv1][vv2]concat=n=3:v=1:a=0 [video]" -map "[video]" output.mp4