上一篇我们讲了EasyDSS添加了水印的功能(EasyDSS新增生成水印模块记录),目前EasyDSS的水印功能开发中,只支持添加水印图片,我们最开始在做研发设计的时候,EasyDSSS只支持上传png格式的图片,其他格式的图片都无法正常生成水印。
因为在EasyDSS中生成水印的命令,只支持png格式的图片。但是此时如果用户上传水印图片时是其他格式比如jpg格式,则无法生成水印视频。
所以我们将代码设置成上传的图片都转成png格式,存在临时的文件夹中,之后在通过检测对应的水印视频是否已经生成成功,用一个定时任务进行监测,每20秒钟就检测一次,如果都成功了,就将临时png文件删除。以免占用磁盘的空间。
参考代码:
go func() {
//延迟5秒
time.AfterFunc(5000, func() {
if len(urlPng) != 0 {
//开启定时任务,每20秒钟检测一次
tick := time.NewTicker(time.Second * 20)
for {
select {
case <-tick.C:
i := 0
for _, v := range vodIds {
_, boo := gWatersProgress.Get(v)
if boo {
break
}
i++
}
if i == len(vodIds) {
for _, v := range urlPng {
err := os.RemoveAll(v)
if err != nil {
log.Println("remove fail error: ", v)
continue
}
log.Println("remove : ", v)
}
return
}
}
}
}
return
})
此时上传的是jpg图片,也是可以进行正常的水印转码,正在生成水印视频。
对于EasyDSS,值得注意的是该视频平台作为一款RTMP协议的流媒体服务器,不仅能够支持视频直播,同时也具备点播功能,与其他平台不同的是,用户可上传视频文件,作为虚拟直播,将已经录制好的视频作为直播视频播放。
当然,EasyDSS还具备很多二次开发的接口,用户可以自由调用进行二次开发,如果大家有兴趣,欢迎测试!