当视频出现水印时如何启动它?

当视频出现水印时如何启动它?

这是我的情况:

我想在其他视频中添加水印视频,但我希望水印在出现时就开始出现。

实际上,我可以显示水印视频并从头开始播放。如果我尝试在特定间隔内添加水印,它会在指定的时间段内正确显示,但水印会停止显示,因为它在播放主视频时开始显示。

这是我正在使用的命令:

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**,否则您将写入上一步的文件!

笔记音频直接来自基础视频。其他来源的音频将被忽略,并将不是根本玩不起来。

相关内容