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

Fut*_*cal 12 overlay ffmpeg delay offset

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

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

ffmpeg -i in.avi -vf "movie=overlay.avi [ovl]; [in][ovl] overlay" out.avi
Run Code Online (Sandbox Code Playgroud)

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

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

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

bla*_*lah 12

扩展艺术家的洞察力,但推测性的答案,视频确实可以很容易地使用-itsoffset旗帜重叠.

-itsoffset标志就像这样:

-itsoffset 偏移量(输入)

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

(注意:尽管短语"输入文件s ",该标志实际上仅适用于紧随其后的输入.请注意这个关于不适用于音频流的偏移的错误 .H/T attronics.)

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

ffmpeg -i bg.avi -itsoffset 2 -i over.avi -filter_complex overlay out.avi
Run Code Online (Sandbox Code Playgroud)

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


art*_*ics 7

根据有限的FFmpeg覆盖文档,该过程期望两个视频具有相同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),以创建所需的最终输出视频文件.