ffmpeg 踩坑实录 添加实时水印(二)

一、背景介绍 最近领导要求做一个视频录制的相关项目。其中,需要对视频文件进行添加 实时时间水印。于是,我想到了使用之前的ffmpeg来做。 二、ffmpeg实际操作 首先把需要添加水印的视频文件,上传到服务器指定位置 比如 “/usr/local/1.mp4”,这样的地方。其次,我们需要了解如何去给视频添加水印。 这里提供两种方式,一种是静态的,一种是动态的。(相关安装请参考 《ffmpeg 踩坑实录(一)》) 静态水印: 复制代码 ffmpeg -i /usr/local/test/448da411-05cb-4ff2-a108-1721014e8e52.mp4 -vf drawtext="fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:text='1q1q1'" 1.mp4 复制代码 动态水印: 复制代码 ffmpeg -i /usr/local/test/448da411-05cb-4ff2-a108-1721014e8e52.mp4 -vf drawtext="expansion=strftime:basetime=$(date +%s -d '2018-10-13 14:10:50'):fontfile=arial.ttf:x=w-tw:fontcolor=red:fontsize=30:text='%Y-%m-%d %H\\:%M\\: %S" 1.mp4 复制代码 以上两种,均在我本机实现过。前一种就是在视频文件全程右上角 贴上了1q1q1q字样的水印。 后一种就是在视频文件的右上角贴上了以“2018-10-13 14:10:50”为起始时间的动态时间水印。 三、命令相关内容详解 静态水印中 -i 表示的是 输入文件 -vf 表示的是 视频滤镜,使用了drawtext滤镜,basetime是视频时间戳的初始值,text是显示时间的格式,fontsize后面一串是关于水印的颜色、字体、背景等设置 动态水印中 采取了 “expansion=strftime”的形式通过表达时,指定水印数值。 更多的内容,可以参考官方的文档,其中给出了不少实际的案例。 四、存在的问题和待改进的地方 1.静态水印不满足要求,验证完成之后便没有对其进行深入尝试; 2.动态水印,有两个问题,第一个 是录制完成之后才对其进行水印的添加,这样打在视频文件上的水印会跟实际录制的时间有一定的误差,如果不在意的仍可以使用该方法实现 第二个 目前文中所列出来的命令,是指定了起始时间的。这样来说,其实是不对的,因为服务器的时间在流逝。但可以采用java拼接命令行,在这个时候把当时的服务器时间插入进去。这样完成了以当时服务器时间作为起始时间的 动态时间水印。 3.效率问题,这次添加水印的视频文件 是大约3分钟时长的MP4文件,两种处理加水印的方式 时间均在十秒左右,比较耗费时间。后期如果采用该方法,需要提升相关效率。 五、参考文献 【1】《ffmpeg为视频添加时间戳 - 手动编译ffmpeg》 【2】 《官方文档》 六 补充 上述第四部分列出的问题中 关于动态时间水印的起始时间问题,可以通过前端请求到业务层,由业务层拼接 执行命令语句 。比如java,获得当时服务器时间 然后拼接加水印的语句。即可获得相关效果https://www.cnblogs.com/iceworld520/p/9783579.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信