FFmpeg 将叠加层从一个像素坐标移动到另一个像素坐标
FFmpeg move overlay from one pixel coordinate to another
我正在尝试在 FFmpeg 中编写一个命令,该命令首先将一个视频流叠加在另一个视频流之上。然后我希望叠加的视频在已知时间从一个像素坐标移动,并在稍后的时间在另一个像素坐标结束。
我对 -filter_complex
的基础知识很满意,但我不知道如何应用任何算术表达式 - 就像这里引用的那样:https://www.ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation
这是我想要完成的事情的示例。
ffmpeg -i [INPUT1] -i [INPUT2] -filter_complex "[0:v][1:v]overlay=shortest=1:x=720:y=0:enable='between(t,10,20)'[overlay];...
在此示例中,覆盖图从第 10 秒到第 20 秒固定在像素坐标 720x0 处。
但是,我想让它以线性方式移动到新位置并在不同的像素坐标处结束。
例如,在 10 秒的叠加期间,我希望它以 720x0 开始,然后以 1000x100 结束。
这可能吗?
这就是您要找的东西吗?
这个蹩脚的例子有 6 秒的持续时间。红框2秒后出现,3秒后结束。
示例:
ffmpeg -i bg.mp4 -i fg.mkv -filter_complex \
"[0:v][1:v]overlay=enable='between=(t,10,20)':x=720+t*28:y=t*10[out]" \
-map "[out]" output.mkv
在 10 秒内将 x
从位置 720 移动到 1000。那等于 28 pixels/second。
y
很简单。
t
是以秒为单位的时间戳。
叠加视频(在本例中为 fg.mkv
)出现时,其持续时间已达到 10 秒。
我正在尝试在 FFmpeg 中编写一个命令,该命令首先将一个视频流叠加在另一个视频流之上。然后我希望叠加的视频在已知时间从一个像素坐标移动,并在稍后的时间在另一个像素坐标结束。
我对 -filter_complex
的基础知识很满意,但我不知道如何应用任何算术表达式 - 就像这里引用的那样:https://www.ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation
这是我想要完成的事情的示例。
ffmpeg -i [INPUT1] -i [INPUT2] -filter_complex "[0:v][1:v]overlay=shortest=1:x=720:y=0:enable='between(t,10,20)'[overlay];...
在此示例中,覆盖图从第 10 秒到第 20 秒固定在像素坐标 720x0 处。
但是,我想让它以线性方式移动到新位置并在不同的像素坐标处结束。
例如,在 10 秒的叠加期间,我希望它以 720x0 开始,然后以 1000x100 结束。
这可能吗?
这就是您要找的东西吗?
这个蹩脚的例子有 6 秒的持续时间。红框2秒后出现,3秒后结束。
示例:
ffmpeg -i bg.mp4 -i fg.mkv -filter_complex \
"[0:v][1:v]overlay=enable='between=(t,10,20)':x=720+t*28:y=t*10[out]" \
-map "[out]" output.mkv
在 10 秒内将
x
从位置 720 移动到 1000。那等于 28 pixels/second。y
很简单。t
是以秒为单位的时间戳。叠加视频(在本例中为
fg.mkv
)出现时,其持续时间已达到 10 秒。