2011-11-15 87 views
10

我试图在视频启动后的某段时间出现ffmpeg的输入视频中添加叠加层。使用FFmpeg设置时间偏移后覆盖视频

的基本方式来增加覆盖是:

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

但是,这将从输入视频的开头覆盖视频(或图片),直到视频结束的一个。

我知道如何使用movie=overlay.avi:seek_point=1.4抵消覆盖视频,但输入视频的偏移怎么样?

我总是可以将视频剪辑到所需的位置,在第二个剪辑上添加叠加层,然后缝合两个,但效率不高。

+0

您是否找到任何解决方案? –

回答

6

根据有限FFmpeg overlay documentation,过程预计这两个视频具有相同的timestamp(例如,0:00:00:00)值,以保持对事物的同步,并警告如果没有那么做avi.out将会有一个不需要的偏移量从使用的视频文件overlay.avi

但是,您可以使用该事实并利用它!

这然后可以想到的是,如果overlay.avi视频具有起动timestamp期望偏移所需in.avi输入视频,则overlay.avi视频将开火条件是相同timestamp通过in.avi)来创建out.avi视频的预期结果。

唯一的坏消息是.avi容器没有时间戳,不像.mp4.mkv文件格式做。您将不得不切换到支持*timestamps*的文件格式以使其起作用(例如,overlay.mp4overlay.mkv)以创建最终的输出视频文件需要。

8

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

-itsoffset标志作品像这样:

-itsoffset 偏移输入

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

(注:尽管短语“输入文件小号”时,标记实际上只适用于输入紧随其后还要注意this bug大约偏移并不适用于音频流H/T attronics。)

所以覆盖有偏移很简单,只要:

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

这个工作,不管容器类型。

+0

** - 1 **使用'-itsoffset'将偏移量应用于** BOTH **文件,而不仅仅是'overlay.avi'文件。参考[** ffmpeg Ticket 1349 itsoffset不适用于第二个输入文件**](http://ffmpeg.org/trac/ffmpeg/ticket/1349)。此外,您发布的摘录确认它是**文件**:***输入文件的时间戳*** – arttronics

+0

@attronics不,这是错误的。这些文档编写得很差,但是您提到的bug单仅适用于音频流,更重要的是,**这个作品**。使用FFmpeg的当前版本运行给定的命令具有延迟覆盖的预期效果。 – blahdiblah

+0

请修改您的答案,以包含文档具有误导性,例如编辑,所以我可以Upvote。感谢澄清。干杯! – arttronics