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
任何帮助,将不胜感激。谢谢
-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**
是叠加将隐藏在输出视频中的时间。**Z**
将是**X**
+ 2。-map "[**XX**]
命令末尾的 以匹配**new_output**
,否则您将在上一步写入文件!注意音频是直接从basevideo抓取的。来自其他来源的音频将被忽略并且根本不会播放。