共计 1754 个字符,预计需要花费 5 分钟才能阅读完成。
hello,兄弟们,我又来分享我的 ffmpeg 脚本啦。
这次分享的是一个给图片或视频添加水印的功能。
先看效果
模拟 DVD 待机画面(gif):
高清视频可查看:https://github.com/jifengg/ffmpeg-script/assets/17020523/02c00806-2514-4dc8-9bdf-df53f66f9931
身份证防盗用水印:
定时随机变换水印位置,防止视频盗用:
https://github.com/jifengg/ffmpeg-script/assets/17020523/b5ba5de5-ca52-417e-a0b3-dbf43bf6bff4
开源地址
GitHub 地址:https://github.com/jifengg/ffmpeg-script
支持一条命令直接加入多个不同的水印,每个水印的参数均可以单独设置。
这里列出脚本支持的参数,更多的使用方法可以到 github 中查看。
node ffmpeg.watermark.js -i [-o ...]
-preset 本脚本除了 -preset 之外的所有参数,均可以通过传递 preset 文件来设置。如果使用./preset/abc.preset 来设置,则 -preset abc 即可。preset 文件的编写请参考 github(https://github.com/jifengg/ffmpeg-script)。-i [必须] 要处理的文件或目录
-y 是否覆盖已经存在的 pbf 文件,默认:false
-h 显示这个帮助信息
-debug 是否开启 debug 模式,打印更详细的日志
-[text|file] [必须] 水印的文本内容或文件路径,必须至少传一组。与 ffmpeg 参数传递规则类似,水印有很多可定义的参数,且支持传多个水印。因此,-text/file 之前的参数是用来设置这一组水印信息的,之后的参数是下一组水印的。如:-fontsize 30 -text 此水印字号为 30 -fontsize 40 -text 此水印字号为 40
-text 水印的文本内容
-fontsize 文字的字号,默认:20
-fontcolor 文字颜色,值的格式同 ffmpeg 的 color,默认:white
-fontborderwidth
文字边框大小,单位像素,默认:0
-fontbordercolor
文字边框颜色,值的格式同 ffmpeg 的 color,默认:black
-fontfile 文字字体文件路径,非 windows 下使用时必传,默认:c:/Windows/Fonts/msyh.ttc(微软雅黑)-file 水印文件的路径,支持视频或图片
-scale 水印文件的缩放尺寸,值的格式同 ffmpeg 的 scale 过滤器。如“1920:1080”-alpha 水印的透明度,取值范围:0.0 - 1.0,默认:1.0[完全不透明]
-[left|right|top|bottom]
水印的左、右、上、下边距,单位:像素。默认:right=20,top=20
-move 水印的移动方式,可选:dvd、random;默认不移动
-xspeed move=dvd 时生效。表示每秒水平移动的像素。默认:400
-yspeed move=dvd 时生效。表示每秒垂直移动的像素。默认:300
-xstart move=dvd 时生效。表示初始水平位置。默认:0
-ystart move=dvd 时生效。表示初始垂直位置。默认:0
-interval move=random 时生效。表示多少秒变换一个位置。默认:10
-seed move=random 时生效。表示随机数种子。不传则随机生成
-repeat 是否用水印重复填充整个画面,默认:false
-boxw 启用填充时,每个水印的宽度,如果水印是 -file,则不能小于 -scale 的宽度,默认:200
-boxh 启用填充时,每个水印的高度,如果水印是 -file,则不能小于 -scale 的高度,默认:100
-rotate 启用填充时,每个水印的旋转角度,注意是角度而不是弧度,默认:0
使用 nodejs 是为了支持批量处理,以及将复杂化的命令行用简单的命令来代替。最终是生成一个 ffmpeg 命令行来进行所有处理。
如果你对 ffmpeg 开发也感兴趣,关于这个脚本的技术文章可以查看这里 ffmpeg.watermark.md
正文完