我正在使用此脚本作为参考:
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的位置,使其从右到左。
答案 0 :(得分:2)
我希望在我的一个应用程序中也具有相同的行为,其中幻灯片从右到左显示。
这就是我所做的,修改了命令:
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
那是正确方向的感觉
答案 1 :(得分:1)
使用
x='W-min(t*W/0.5\,W)'
图像将首先显示在右侧,并在x = 0处停止。