【问题标题】:Shifting overlay position every x seconds每 x 秒移动覆盖位置
【发布时间】:2019-11-11 16:36:39
【问题描述】:

目前,我在视频的右下角添加了一个水印,以防止其他人重新发布它。但是,它们模糊了水印,所以我正在考虑添加一个移动水印,它每 x 秒改变一次位置。

以下是我当前的 ffmpeg 命令:

ffmpeg -i input.mp4 -i logo.png -filter_complex "[1][0]scale2ref=iw/4:ow*90/272[wm][vid];[vid][wm]overlay=W-w-W*10/100:H-h-H*5/100" -preset veryfast output.mp4

如何使水印位置每 30 秒从右下角到右上角、左上角和左下角?谢谢。

【问题讨论】:

  • 查看我在superuser.com/q/1413085的回答中的第二条命令
  • 感谢@Gyan 的回答!我现在有了改变 x 和 y 的想法。我仍然不明白5+mod(trunc(((t-12)+1200)/1200),2) 的用法,所以我不知道要改变什么才能得到我想要的结果。对不起,我不熟悉代码和命令,我只是在猜测。你能解释一下这是什么意思吗?我尝试每 60 秒更改一次位置:overlay='5+mod(trunc(((t-12)+12)/12),2)*(W-w-W*10/100)':'5+mod(trunc(((t-12)+18)/12),2)*(H-h-H*5/100)':enable='gt(t,12)'(请阅读下一条评论,由于限制,我必须拆分它)
  • 但是,位置每 6 秒更改一次。也只有底部水印被完美定位。顶部水印卡在视频帧附近,没有任何空格。如何使左上角镜像左下角,右上角镜像右下角?再次抱歉我的菜鸟问题。
  • 我会在接下来的几天内添加答案。
  • 谢谢吉安。期待您的回答!与此同时,我会试着弄清楚。

标签: ffmpeg watermark


【解决方案1】:

叠加表达式,每 30 秒更改一次,

overlay=x='if(lt(mod(t\,120)\,60)\,W-w-W*10/100\,W*10/100)':y='if(lt(mod(t+30\,120)\,60)\,H-h-H*5/100\,H*5/100)'

这将从右下角开始,每 30 秒顺时针移动一次。

mod 函数中的第二个参数(120)是一圈的周期。 60 是半句号。

【讨论】:

  • 非常感谢!我试图让它工作,但只能改变时间。
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 2021-04-09
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
相关资源
最近更新 更多