【问题标题】:FFmpeg move overlay from one pixel coordinate to anotherFFmpeg 将叠加层从一个像素坐标移动到另一个像素坐标
【发布时间】:2015-05-22 13:12:39
【问题描述】:

我正在尝试在 FFmpeg 中编写一个命令,该命令将首先将一个视频流覆盖在另一个视频流之上。然后我希望叠加的视频在已知时间从一个像素坐标移动,并在以后在另一个像素坐标结束。

我对@9​​87654322@ 的基本知识感到满意,但我不知道如何应用任何算术表达式 - 就像这里引用的那个: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 结束。

这可能吗?

【问题讨论】:

  • 哎呀。以为我是超级用户……我错了!

标签: video ffmpeg


【解决方案1】:

这就是你要找的东西吗?

这个糟糕的例子有 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 像素/秒。

  • y 很简单。

  • t 是以秒为单位的时间戳。

  • 重叠的视频(在本例中为fg.mkv)在出现时已经持续了 10 秒。

【讨论】:

  • 完美,谢谢!我最初很难理解t*28 区域的含义——但这完全有道理,它是一个像素值以每秒 28 个像素的速率变化。这可以在像scale=720+t*2:480 这样的比例过滤器中工作吗?我希望这会使 X 像素值每秒增加 2。对吗?
  • 嘿,如果我们想将它与移动元素的淡入和淡出一起使用,这将如何工作?
  • @NavedKhan 可能。请参阅fade 过滤器。 SO上有几个用法示例。
  • 像魅力一样工作!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多