水印 动态"/>
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水印 动态
发布评论