菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
475
0

【开发记录】RTMP协议视频直播点播智能分析平台EasyDSS拓展多种格式的水印图片功能

原创
05/13 14:22
阅读数 23203

上一篇我们讲了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还具备很多二次开发的接口,用户可以自由调用进行二次开发,如果大家有兴趣,欢迎测试!

发表评论

0/200
475 点赞
0 评论
收藏
为你推荐 换一批