FFmpeg从一个像素坐标移动到另一个像素坐标 [英] FFmpeg move overlay from one pixel coordinate to another

查看:609
本文介绍了FFmpeg从一个像素坐标移动到另一个像素坐标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我很乐意基本的 -filter_complex ,但我无法弄清楚如何应用任何算术表达式,如这里引用的: https://www.ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation



这是我想要完成的一个例子。

  ffmpeg -i [INPUT1] -i [ INPUT2] -filter_complex[0:v] [1:v] overlay = latest = 1:x = 720:y = 0:enable ='between(t,10,20)'[overlay]; ... 

在这个例子中,覆盖在第10秒到第20秒的像素坐标720x0处是静止的。 >

但是,Id喜欢以线性方式移动到新位置,并以不同的像素坐标结束。


$ b $例如,在这个10秒的覆盖范围内,我想让它从720x0开始,然后以1000x100结束。



这是可能吗? / p>

解决方案

这是关于你要找什么?



img src =https://i.stack.imgur.com/4CJiI.gifalt =进行动作>



这个糟糕的例子有一段持续时间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




  • x 从位置720移动到1000秒,持续10秒。这等于28像素/秒。


  • y 很简单。


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


  • 重叠的视频( fg.mkv 在这个例子中)已经有10秒到它的持续时间出现。



I'm trying to write a command within FFmpeg that will first overlay one video stream on top of another one. Then I want the overlayed video to move from one pixel coordinate at a known time, and end at another pixel coordinate at a later time.

I'm comfortable with the basics of the -filter_complex, but I cannot figure out how to apply any arithmetic expressions - like the one's referenced here: https://www.ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation

Here's an example of something I'd like to accomplish.

ffmpeg -i [INPUT1] -i [INPUT2] -filter_complex "[0:v][1:v]overlay=shortest=1:x=720:y=0:enable='between(t,10,20)'[overlay];...

In this example the overlay is stationary at pixel coordinate 720x0 from the 10th second to the 20th second.

However, Id like to have it move to a new location in a linear fashion and end at a different pixel coordinate.

For example, during that 10 second overlay, I'd like to have it start at 720x0, but then end at 1000x100.

Is this possible?

解决方案

Is this about what you're looking for?

This crappy example has a duration of 6 seconds. The red box appears after 2 seconds and ends 3 seconds later.

Example:

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

  • Move x from position 720 to 1000 in 10 seconds. That equals 28 pixels/second.

  • y is easy enough.

  • t is the timestamp in seconds.

  • The overlaid video (fg.mkv in this example) will already be 10 seconds into its duration when it appears.

这篇关于FFmpeg从一个像素坐标移动到另一个像素坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆