FFmpeg将叠加从一个像素坐标移动到另一个像素坐标

时间:2015-05-21 21:22:01

标签: video 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=shortest=1:x=720:y=0:enable='between(t,10,20)'[overlay];...

在此示例中,叠加层在从第10秒到第20秒的像素坐标720x0处静止。

但是,我想让它以线性方式移动到新位置并以不同的像素坐标结束。

例如,在10秒覆盖期间,我希望它从720x0开始,但以1000x100结束。

这可能吗?

1 个答案:

答案 0 :(得分:2)

这是关于你要找的东西吗?

making a movement

这个糟糕的例子持续时间为6秒。红色框在2秒后出现,并在3秒后结束。

示例:

<html>
<head>
    <meta http-equiv="content-type" content="text/html;" charset="UTF-8">
        <style>
            /** Specify a font named "MyFont",
            and specify the URL where it can be found: */
            @font-face {
                font-family: "MyFont";
                 <!-- you can set Custom font here -->
                src: url('file:///android_asset/fonts/BLKCHCRY.TTF');
            }
            h3 { font-family:"MyFont"}  
        </style>
</head>
<body>
    <h3>
        Welcome to CustomFont Demo
    </h3>
</body>
  • 在10秒内将public class MainActivity extends Activity { WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting reference to WebView of the activity_main layout mWebView = (WebView) findViewById(R.id.webview); // Loading an html page into webview mWebView.loadUrl("file:///android_asset/demo.html"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } 从位置720移至1000。这相当于28像素/秒。

  • 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是以秒为单位的时间戳。

  • 重叠的视频(此示例中为y)在显示的持续时间内已经是10秒。