我尝试过什么?

我尝试过什么?

我一直在尝试找出将图像输入合并到一个视频中的方法。基本上,我有几张图像作为输入,然后应用一些过滤器,然后将其与视频合并,如下所示(使用 zoompan 过滤器的多个图像)

ffmpeg -i "inputs/image0.png" -i "inputs/image1.png" -i "inputs/image2.png" -i "inputs/image3.png" -i "inputs/background_video.mp4" -filter_complex "[4]split=2[color][alpha];[color]crop=iw/2:ih:0:0[color];[alpha]crop=iw/2:ih:iw/2:0[alpha];[color][alpha]alphamerge[ovrly];[0]scale=540:960,setsar=1[0_scaled];[1]scale=540:960,setsar=1[1_scaled];[2]scale=540:960,setsar=1[2_scaled];[3]scale=540:960,setsar=1[3_scaled];[0_scaled]scale=2700x4800,zoompan=z='min(zoom+0.0010,1.20)':x='iw/2-iw*(1/2-0/100)*on/201-iw/zoom/2':y='ih/2-ih*(1/2-0/100)*on/201-ih/zoom/2':d=25*8.04:s=540x960[v0];[1_scaled]scale=2700x4800,zoompan=z='min(zoom+0.0013,1.20)':x='iw/2-iw*(1/2-100/100)*on/151-iw/zoom/2':y='ih/2-ih*(1/2-0/100)*on/151-ih/zoom/2':d=25*6.04:s=540x960[v1];[2_scaled]scale=2700x4800,zoompan=z='min(zoom+0.0010,1.20)':x='iw/2-iw*(1/2-100/100)*on/201-iw/zoom/2':y='ih/2-ih*(1/2-100/100)*on/201-ih/zoom/2':d=25*8.04:s=540x960[v2];[3_scaled]scale=2700x4800,zoompan=z='min(zoom+0.0010,1.20)':x='iw/2-iw*(1/2-50/100)*on/201-iw/zoom/2':y='ih/2-ih*(1/2-50/100)*on/201-ih/zoom/2':d=25*8.04:s=540x960[v3];[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[concatenated_video];[concatenated_video][ovrly]overlay=0:0" "outputs/zoomInTest.mp4"

我尝试了几种类似的想法来使 xfade 发挥作用,但是遇到了下面提到的问题。

ffmpeg -loop 1 -t 8.04 -i "inputs/image0.png" -loop 1 -t 5.60 -i "inputs/image1.png" -loop 1 -t 8.36 -i "inputs/image2.png" -loop 1 -t 8.16 -i "inputs/image3.png" -i "inputs/background_video.mp4" -filter_complex "[4]split=2[color][alpha];[color]crop=iw/2:ih:0:0[color];[alpha]crop=iw/2:ih:iw/2:0[alpha];[color][alpha]alphamerge[ovrly];[0][1]xfade=transition=circleopen:duration=1.00:offset=7.54[v0];[1][2]xfade=transition=diagbl:duration=1.00:offset=13.14[v1];[2][3]xfade=transition=slideright:duration=1.00:offset=21.00[v2];[3]fade=t=in:st=29.0:d=1.0[v3];[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[concatenated_video];[concatenated_video][ovrly]overlay=0:0" "outputs/fadeTestNew.mp4" 

下面的图片是我的过程的参考。 在此处输入图片描述

我尝试过什么?

1.输出根本没有动画(已解决)

我通过指定-loop 1 -t 8.04 -i而不是仅-i指定所有输入图像来解决了这个问题。

2.过滤器未映射,因为未使用等(已解决)

我通过删除产生[0_scaled]未使用的输出的比例过滤器解决了这个问题。

3.xfade 滤镜无法正常工作。(未解决)

观察上面的第二个 ffmpeg 命令,这是我的命令的最后更新。事情是前两个输入图像被完美地动画化(比如我希望第一个输入在 7.54 秒左右通过过渡圆打开淡出,而且它运行良好,但其余的都搞乱了,无法描述发生了什么!

我发现 xfade 滤镜需要 2x 输入,所以我只能在前 3 个输入上使用过渡,而对于第 4 个图像,我使用淡入淡出滤镜在最后一秒将其淡出。

[摘要]:我想要的就是使用所有这 4 张图像。通过xfade过滤器在不同的时间转换它们,例如第一次转换在 8 秒,第二次转换在 14 秒,第三次转换在 22 秒,然后将它们全部映射到我的背景视频上并生成最终输出视频!

谢谢!

[更新 1]:我已设法合并所有过渡,但上述问题仍然存在,因为在新视频中过渡被放置在不同的时间(我的视频长 30 秒,但现在输出 37 秒)。无论如何,您可以在此处查看我的最新命令。

ffmpeg -loop 1 -t 8.54 -i "inputs/image0.png" -loop 1 -t 6.10 -i "inputs/image1.png" -loop 1 -t 8.86 -i "inputs/image2.png" -loop 1 -t 8.66 -i "inputs/image3.png" -i "inputs/background_video.mp4" -filter_complex "[4]split=2[color][alpha];[color]crop=iw/2:ih:0:0[color];[alpha]crop=iw/2:ih:iw/2:0[alpha];[color][alpha]alphamerge[ovrly];[0][1]xfade=transition=circleopen:duration=1.00:offset=7.54[v0];[v0][2]xfade=transition=diagbl:duration=1.00:offset=12.14[v1];[v1][3]xfade=transition=slideright:duration=1.00:offset=20.00[v2];[v2][3]xfade=transition=slideright:duration=1.00:offset=27.00[v3];[v3]concat=n=1:v=1:a=0,format=yuv420p[concatenated_video];[concatenated_video][ovrly]overlay=0:0" "outputs/fadeTestNew2.mp4" 

相关内容