使用FFmpeg设置时间偏移后叠加视频

时间:2011-11-15 03:11:23

标签: ffmpeg overlay delay offset

我正在尝试使用ffmpeg为输入视频添加叠加层,该视频会在视频开始后的某个时间出现。

添加叠加层的基本方法是:

ffmpeg -i in.avi -vf "movie=overlay.avi [ovl]; [in][ovl] overlay" out.avi

但是,这会从输入视频的开头添加叠加视频(或图像),直到其中一个视频结束。

我知道如何使用movie=overlay.avi:seek_point=1.4来覆盖叠加视频,但是输入视频的偏移怎么办?

我总是可以将视频剪辑到所需的点,在第二个剪辑上添加叠加,然后缝合两个,但这不是很有效。

2 个答案:

答案 0 :(得分:10)

展开arttronics' insightful, but speculative answer视频确实很容易使用-itsoffset标记覆盖偏移。

-itsoffset标志的作用如下:

  

-itsoffset offset 输入

     

以秒为单位设置输入时间偏移。 [ - ] hh:mm:也支持ss [.xxx]语法。偏移量将添加到输入文件的时间戳中。指定正偏移意味着相应的流延迟偏移秒。

(注意:尽管短语“输入文件 s ”,但该标志实际上仅适用于紧随其后的输入。另请注意this bug关于不适用于音频流的偏移。 / T attronics。)

所以用偏移覆盖就像这样简单:

ffmpeg -i bg.avi -itsoffset 2 -i over.avi -filter_complex overlay out.avi

无论容器类型如何,这都有效。

答案 1 :(得分:6)

根据有限的FFmpeg overlay documentation,该流程预计两个视频具有相同的timestamp(例如,0:00:00:00)值以保持同步, 警告 ,如果没有完成,则avi.out将有来自{{>> 不需要的偏移 {1}}使用的视频文件。

但是,您可以利用这一事实并利用它!

然后可以想象,如果overlay.avi视频的起始overlay.avi 所需偏移量 必需timestamp输入视频上,in.avi视频将针对相同的overlay.avitimestamp 提供)触发,以创建预期结果对于in.avi视频。

唯一的坏消息是out.avi容器没有时间戳,与.avi.mp4文件格式不同。您必须切换为支持.mkv的文件格式,才能使其生效(例如,*timestamps*overlay.mp4)以创建最终的 输出视频文件 必需。