ffmpeg幻灯片从右向左的过渡

ffmpeg幻灯片从右向左的过渡,ffmpeg,Ffmpeg,我使用此脚本作为参考: ffmpeg -loop 1 -i 1.jpg -loop 1 -i 2.jpg -loop 1 -i 3.jpg -filter_complex "nullsrc=size=480x600[v0];[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];[1:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v2a][v

我使用此脚本作为参考:

ffmpeg -loop 1 -i 1.jpg -loop 1 -i 2.jpg -loop 1 -i 3.jpg -filter_complex "nullsrc=size=480x600[v0];[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];[1:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v2a][v2b];[2:v]trim=duration=5,scale=480x600,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]" Slideoutput.mp4
这是通过将图像从左向右转换来实现的。我需要做的是将图像从右向左转换。我试着改变标志,但结果不对

我应该怎么做才能改变imgae标记,使其从右向左。

使用

x='W-min(t*W/0.5\,W)'
图像将首先出现在右侧,并在x=0时停止。

使用

x='W-min(t*W/0.5\,W)'
图像将首先出现在右侧,并在x=0处停止。


我希望在我的一个应用程序中有相同的行为,幻灯片从右向左显示

我就是这样做的,修改了命令

ffmpeg -loop 1 -i img01.png -loop 1 -i img02.png -loop 1 -i img03.png -filter_complex \
"nullsrc=size=480x600[v0];\
[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];\
[1:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v2a][v2b];\
[2:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS[v3];\
[v0][v1a]   overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv0];\
[v1b][v2a]  overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv1];\
[v2b][v3]   overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv2];\
[vv0][vv1][vv2] concat=n=3:v=1:a=0 [video]" -map "[video]" Slideoutput.mp4
说明: 关键是为叠加帧提供适当的X值

示例: 覆盖宽度为:480

我们希望在第一帧x=480处显示覆盖图
然后类似于,
x=460
x=420
.
.
x=0

这就是它从正确的方向来的样子


我希望在我的一个应用程序中有相同的行为,幻灯片从右向左显示

我就是这样做的,修改了命令

ffmpeg -loop 1 -i img01.png -loop 1 -i img02.png -loop 1 -i img03.png -filter_complex \
"nullsrc=size=480x600[v0];\
[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];\
[1:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v2a][v2b];\
[2:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS[v3];\
[v0][v1a]   overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv0];\
[v1b][v2a]  overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv1];\
[v2b][v3]   overlay=x='max(w-(t*w/0.5)\,0)':shortest=1[vv2];\
[vv0][vv1][vv2] concat=n=3:v=1:a=0 [video]" -map "[video]" Slideoutput.mp4
说明: 关键是为叠加帧提供适当的X值

示例: 覆盖宽度为:480

我们希望在第一帧x=480处显示覆盖图
然后类似于,
x=460
x=420
.
.
x=0


这就是从正确的方向来的感觉

谢谢Gyan。如果我们想把持续时间从5秒增加到7秒呢。我只需要设置trim=duration=7,对吗?与从左到右的不完全一样
ffmpeg-loop 1-I 1.jpg-loop 1-I 2.jpg-loop 1-I 3.jpg-filter_complex“nullsrc=size=480x600[v0];[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];[1:v]trim=duration=5,scale=480x600,setpts-STARTPTS,split[v2b];[2:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS[v3];[v0][v1a]叠加=x='W-min(t*W/0.5\,W+W)':shortest=1[vv0];[v1b][v2a]叠加=x='W-min(t*W/0.5\,W+W);[v2b][v3]叠加=x='W-min(t*W/0.5\,W+W)':shortest=1[vv2 vv2 at=n=3:v视频地图]RightSlideoutput.mp4
我使用了上面的代码,第一张幻灯片根本没有停止。其他幻灯片也在继续移动。我可以上传生成的视频并共享链接,这样您就可以直观地了解问题所在。问题文件的链接:第二个链接是从左到右的,这是原始且正确的链接:谢谢@Gyan。现在很好用。谢谢吉安。如果我们想把持续时间从5秒增加到7秒呢。我只需要设置trim=duration=7,对吗?与从左到右的不完全一样
ffmpeg-loop 1-I 1.jpg-loop 1-I 2.jpg-loop 1-I 3.jpg-filter_complex“nullsrc=size=480x600[v0];[0:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS,split[v1a][v1b];[1:v]trim=duration=5,scale=480x600,setpts-STARTPTS,split[v2b];[2:v]trim=duration=5,scale=480x600,setpts=PTS-STARTPTS[v3];[v0][v1a]叠加=x='W-min(t*W/0.5\,W+W)':shortest=1[vv0];[v1b][v2a]叠加=x='W-min(t*W/0.5\,W+W);[v2b][v3]叠加=x='W-min(t*W/0.5\,W+W)':shortest=1[vv2 vv2 at=n=3:v视频地图]RightSlideoutput.mp4
我使用了上面的代码,第一张幻灯片根本没有停止。其他幻灯片也在继续移动。我可以上传生成的视频并共享链接,这样您就可以直观地了解问题所在。问题文件的链接:第二个链接是从左到右的,这是原始且正确的链接:谢谢@Gyan。现在效果很好。