这是我的情况:
我想在其他视频中添加水印视频,但我希望水印在出现时就开始出现。
实际上,我可以显示水印视频并从头开始播放。如果我尝试在特定间隔内添加水印,它会在指定的时间段内正确显示,但水印会停止显示,因为它在播放主视频时开始显示。
这是我正在使用的命令:
ffmpeg -y -i big_buck_bunny.mp4 -i alpha.mov -filter_complex “[1:v] fade=out:st=30:d=1:alpha=1 [ov];[0:v][ov] overlay=10:main_h-overlay_h-10:enable=between(t\,3\,5) [v]”-map “[v]”-map 0:a -c:v libx264 -c:a 复制 out.mp4
任何帮助都将不胜感激。谢谢
答案1
在叠加输入之前使用-itsoffset
与过滤器启动时相同的秒数(在您的情况下为 3)
这是维护fade out
您原有的过滤器,但该过滤器不会产生任何可见的结果:
ffmpeg -y -i big_buck_bunny.mp4 -itsoffset 3 -i alpha.mov -filter_complex "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:main_h-overlay_h-10:enable=between(t\,3\,5) [v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy out.mp4
这是有 3 个输入(2 个覆盖和一个基础)并且没有其他过滤器的情况:
ffmpeg -y -i basevideo.mp4 -itsoffset 3 -i overlay1.mp4 -itsoffset 8 -i overlay2.mp4 -filter_complex "[0:v][1:v] overlay=0:0:enable=between(t\,3\,5) [oa]; [oa][2:v] overlay=0:0:enable=between(t\,8\,10) [ob]" -map "[ob]" -map 0:a -c:v libx264 -c:a copy output.mp4
要继续添加叠加视频:
-itsoffset **X** -i newinput.mp4
在最后一个输入文件后 添加。- 命令输入文件很重要
**X**
叠加视频将开始播放(这不会展示覆盖,只需在内部启动视频播放即可。根据需要进行调整(可能**X**
与下一步中的值匹配)
- 在最后一个块后插入另一个
[**previous_output**][**Y**:v] overlay=0:0:enable=between(t\,**X**\,**Z**) [**new_output**]
。**Y**
是第 Y 个输入文件,从 0 开始(在我的示例中,basevideo 是 0,overlay1 是 1,overlay2 是 2,等等)。**X**
是覆盖的时间展示在输出视频中。**Z**
是覆盖的时间隐藏在输出视频中。- 时间是从基础视频的开始计算的,而不是叠加视频的长度,因此请计算持续时间:如果叠加视频长 2 秒,
**Z**
则为**X**
+2。
- 调整
-map "[**XX**]
命令末尾的以匹配**new_output**
,否则您将写入上一步的文件!
笔记音频直接来自基础视频。其他来源的音频将被忽略,并将不是根本玩不起来。