ffmpeg水印 动态

编程入门 行业动态 更新时间:2024-10-23 15:22:31

ffmpeg<a href=https://www.elefans.com/category/jswz/34/1769835.html style=水印 动态"/>

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等。

更多推荐

ffmpeg水印 动态

本文发布于:2024-02-11 08:14:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1679974.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:水印   动态   ffmpeg

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!