我刚刚在 YouTube 上找到了这个视频,其中有一个带有移动网格的分屏。我想知道如何使用 ffmpeg 创建像视频中一样的移动分屏。
这就是我想要实现的目标:
你似乎误解我了,我研究了这个视频代码我的问题是我不知道像那个视频那样的 png 循环。
ffmpeg -i video.mp4 -i nen.png -filter_complex "overlay=x=0:y='if(gte(t,0), -w+(t)*800, 3)'" out.mp4
我尝试过,loop -1 and overlay:shortest=1
但失败了
您可以为我循环显示覆盖吗?
答案1
您需要使用复杂的过滤器:
ffmpeg -f lavfi -i "\
movie=input-1.mp4,scale=960:540[v1]; \
movie=input-2.mp4,scale=960:540[v2]; \
movie=input-3.mp4,scale=1920:540[v3]; \
[v1][v2]hstack[hstack]; \
[hstack][v3]vstack[stack]; \
movie=grid.png[grid]; \
[stack][grid]overlay=y='5*sin(0.1*n)'[outv]" \
-map "[outv]" \
output.mp4
假设您有三个输入视频(input-1.mp4
到input-3.mp4
),分别是scale
d在这个例子中,只是为了让它们达到网格的正确尺寸。然后将它们水平放置,垂直stack
编辑叠加在一起,得到标记为 的 1920⨉1080 输出视频stack
。
现在您有一个grid.png
透明的覆盖层,其尺寸也必须是 1920⨉1080。当然,您必须使用一些图像编辑器自己创建此网格。
这个网格将overlay
位于堆栈顶部,但其y
坐标将根据输出而变化正弦函数可以通过改变函数前面的参数n
(即帧数)来调整运动的速度,通过改变函数前面的参数来调整运动的幅度sin
。
当然,如果您想要更随机的运动,您可以另外使用该功能修改位置random
。