ffmpeg水印 动态

动态水印根据时间或输入帧更新水印图片的位置。下面介绍3种水印的实现。

漂移水印

漂移水印会在视窗内连续轨迹移动。实现利用的是随帧数变化 赋值不同的x轴,y轴坐标。需要用到变化的量,这里使用随时间变量t

ffmpeg -i main.mp4 -i overlay.png -filter_complex "overlay=x='abs(main_w-main_w*mod(t/4,2))':y='abs(main_h*mod(t/8,1))'" output.mp4

在这里插入图片描述

abs表达式返回绝对值。mod计算两数的余数,目的是限制x,y的最大坐标值。mod参数使用了t变量,即视频的时间值。这里水印将在X轴方向来回弹,y轴上从0到主视窗高度重复。参数描述可参考ffmpeg 入门篇

跳跃水印

跳跃水印的移动轨迹是不连续的,间隔一段时间会出现在视窗的某个位置。实现上可以把变量t往上取整。这样水印在t是整数时才会变化。

ffmpeg -i main.mp4 -i overlay.png -filter_complex "overlay=x='mod(main_h/0.8*ceil(t),main_w)':y='mod(main_w/3*ceil(t/2),main_h)'" output.mp4

在这里插入图片描述

同样使用mod防止水印超出视窗。

旋转水印

动态的旋转水印 和 静态旋转水印 都是使用rotate过滤器,不同的是动态需要指定旋转循环以及输出时机。

ffmpeg -i main.mp4 -loop 1 -i overlay.png -filter_complex [1:v]rotate=a='t*PI':ow='rotw(PI/4)':oh='roth(PI/4)':fillcolor='none'[out],[0:v][out]overlay=x=100:y=100:shortest=1  output.mp4

在这里插入图片描述

  • 由于水印是静态图片,除了赋值变化的弧度外,还需要通过loop过滤器实现帧循环。
  • 设置循环后水印的帧数变成无限循环,这时输出会一直生成帧。通过指定shortest强制在最短的输入(main.mp4)终止时输出。
  • 水印图片旋转后同样需要重新指定输出宽度高度,以及背景色。

小结

动态水印使用动态的变量更新水印的x,y坐标。可以使用时间t或帧序数n等。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值