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

stu*_*zzo 2 video ffmpeg watermark

这是我的场景:

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

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

这是我正在使用的命令:

ffmpeg -y -i big_buck_bunny.mp4 -i alpha.mov -filter_complex "[1:v] 淡出:st=30:d=1:alpha=1 [ov]; [0:v][ov] 叠加= 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

任何帮助,将不胜感激。谢谢

NuT*_*TyX 5

-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
Run Code Online (Sandbox Code Playgroud)

这是有 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
Run Code Online (Sandbox Code Playgroud)

要继续添加叠加视频:

  • -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**是叠加将隐藏在输出视频中的时间。
    • 时间算作为BASEVIDEO,而不是叠加视频的lenght的开始,所以做你的时间计算:如果叠加视频是2秒长,**Z**将是**X**+ 2。
  • 调整-map "[**XX**]命令末尾的 以匹配**new_output**,否则您将在上一步写入文件!

注意音频是直接从basevideo抓取的。来自其他来源的音频将被忽略并且根本不会播放。